Tensorflow2.1基础知识---复杂度、学习率、激活函数、损失函数
文章目录
- 复杂度
- 学习率
- 激活函数
- 损失函数
复杂度
- 空间复杂度(用层数和待优化的参数个数表示)
- 层数 = 隐藏层的层数+1个输出层(输入层不算)
- 总参数 = 总w + 总b
- 时间复杂度:
乘加运算次数
学习率
学习率是一个超参数,根据经验来设定,学习速率调得太低,训练速度会很慢,学习速率调的过高,每次迭代波动会很大,再反向传播的过程中会更新权值w
指数衰减学习率:可以先用较大的学习率,快速得到较优解,然后逐步减小学习率,使模型再训练后期稳定。
指数衰减学习率 = 初始学习率 * (学习率衰减率^(当前轮数/多少轮衰减一次))
激活函数
激活函数的定义:
激活函数(Activation Function),就是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端为什么要有激活函数
如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合,这种情况就是最原始的感知机。
如果使用激活函数,激活函数给神经元引入了非线性因素,使得神经网络可以逼近人任何非线性函数,这样神经网络可以用到多种非线性的模型中。常用的激活函数
Sigmoid函数
特点:- 容易造成梯度消失
- 输出非0均值,收敛慢
- 幂运算复杂,训练时间长
Tanh函数
特点:- 输出均值是0
- 易造成梯度损失
- 幂运算复杂,训练时间长
Relu函数
优点:- 解决了梯度消失问题(在正区间)
- 只需判断输入是否大于0,计算速度快
- 收敛速度远快于sigmoid和tanh
缺点:
- 输出非0均值,收敛慢
- Dead RelU问题:某些神经元可能永远不会被激活,导致相应的参数永远不能被更新(不会被激活的原因:在负区间,输入特征为0,在进行反向传播的时候,梯度一直为0,不会进行参数的更新)
Leaky Relu函数
理论上讲,leaky Relu函数解决了输入特征为负区间的问题,但是在实际操作中,多用Relu函数
总结:(对于初学者)
- 首选relu激活函数
- 学习率设置较小值
- 输入特征标准化,即让输入特征满足以0为均值,1为标准差的正态分布
初始参数中心化,即让随机生成的参数满足以0为均值,2当前层输入特征数\sqrt \frac{2}{当前层输入特征数}当前层输入特征数2为标准差的正态分布
损失函数
损失函数表示的是预测值y与标准答案y_的差距,损失函数可以定量判断w、b的优劣,当损失函数输出最小时,参数w、b会出现最优值
常用的损失函数:
均方误差mse
loss_mse = tf.reduce_mean(tf.square(y - y_))自定义损失函数(根据实际情况进行自定义,相当于自己建立模型)
如预测商品销量,预测多了,损失成本;预测少了,损失利润。若利润不等于成本,则mse产生的loss无法利益最大化
自定义损失函数
loss_zdy = tf.reduce_sum(tf.where(tf.greater(y,y_),COST (y - y_),PROFIT(y_-y)))交叉熵损失函数CE(Cross Entropy):表征两个概率分布之间的距离
Tf.losses.categorical_crossentory(y_,y)
例子:已知答案y_=(1,0) 预测y1=(0.6,0.4) y2=(0.8,0.2) 哪个更接近标准答案?softmax与交叉熵结合输出先过sofimax函数,再计算y与y_的交叉熵损失函数tf.nn.softmax_cross_entropy_with_logits(y_,y)
下面的是笔者的微信公众号,欢迎关注,会持续更新c++、python、tensorflow、机器学习、深度学习等系列文章
Tensorflow2.1基础知识---复杂度、学习率、激活函数、损失函数相关推荐
- TensorFlow2.x 常用知识
TensorFlow2.x 常用知识 1. 简介 1.1 损失函数 1.1.1 MSE 1.2 梯度消失 1.3 常用激活函数 1.3.1 ReLU 1.3.2 Sigmoid 1.3.3 Softm ...
- 总结1-深度学习-基础知识学习
[小记]下采样和池化的区别: 池化的神解释: 池化 = 涨水 池化的过程 = 升高水位(扩大矩阵网格) 池化的目的是为了得到物体的边缘形状.可以想象水要了解山立体的形状,水位低时得出山脚的形状,水位 ...
- 大数据技术之_17_Storm学习_Storm 概述+Storm 基础知识+Storm 集群搭建+Storm 常用 API+Storm 分组策略和并发度
大数据技术之_17_Storm学习 一 Storm 概述 1.1 离线计算是什么? 1.2 流式计算是什么? 1.3 Storm 是什么? 1.4 Storm 与 Hadoop 的区别 1.5 Sto ...
- 神经网络基础知识、常用激活函数及其Python图形绘制
在人工智能与机器学习研究与应用领域,神经网络占有重要地位.神经网络(Neural Networks, NNs),又称人工神经网络(Artificial Neural Networks, ANNs),是 ...
- 深度学习基础知识整理
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/kwame211/article/details/81165381 本文是在七月的BAT机器学习面试1 ...
- 快速了解机器视觉(CV)基础知识
最近再查一些基础知识的时候看见了几篇文章写得很棒(在这篇文章的结束我会给出参考链接),然后我把他们整合了一下,跟大家分享,希望能有帮助: 1.计算机视觉领域四大基本任务中的应用: a.图片分类 b.目 ...
- 秋招准备-基础知识篇(正更)
秋招准备-基础知识篇 深度学习 介绍优化器以及如何优化.包括SGD, Momentum,Adagrad,RMSProp,Adam. 欠拟合和过拟合.解决方法. 损失函数.BCE loss和softma ...
- 深入理解深度学习——GPT(Generative Pre-Trained Transformer):基础知识
分类目录:<深入理解深度学习>总目录 相关文章: · GPT(Generative Pre-Trained Transformer):基础知识 · GPT(Generative Pre-T ...
- 基于人脸的常见表情识别(1)——深度学习基础知识
基于人脸的常见表情识别(1)--深度学习基础知识 神经网络 1. 感知机 2. 多层感知机与反向传播 卷积神经网络 1. 全连接神经网络的2大缺陷 2. 卷积神经网络的崛起 卷积神经网络的基本网络层 ...
最新文章
- mysql安装图解 mysql图文安装教程(详细说明)
- OpenDayLight Helium实验三 OpenDaylight二层转发机制实验
- 篝火怎么做_上世纪的“Dyatlov事件”到底是怎么一回事儿,真是未知力量吗?...
- H5开发的web APP和原生APP的区别
- 工具包:Safetype Config使用
- 完全跨域的单点登录(SSO)解决方案源码解析
- static用法报错解决:cannot declare member function to have static linkage [-fpermissive]
- ZOJ 1914 Arctic Network
- 【网络通讯开发系列】如何使用C语言编程通过UDP通讯解析域名
- 软件项目开发流程及人员职责
- python编程 迷你世界_迷你世界迷你编程下载
- Thread--线程创建的三种方式
- windows 系统防火墙 添加端口号方法
- 园林工程计算机教程,园林设计全攻略电子教程第1章 园林设计与计算机制图.ppt...
- 小白学java之车辆管理系统,超基础!
- Acunetix Web Vulnerability Scanner使用指导书
- C++面向对象编程题 第23题
- 八个产品经理接私活的平台,你有技术就有钱
- ipad分屏功能怎么用_支付宝晚点付怎么用 晚点付是什么功能使用说明
- Moment.js (JavaScript 日期处理类库)