0419
B站深度学习视频https://www.bilibili.com/video/BV1ht411i7Ld?p=1
12-17 总结
神经网络泛化能力一定要强
**函数与损失函数
https://www.jianshu.com/p/e5bcdd932d05
**函数的作用
线性模型的表达能力不够,**函数增加神经网络模型的非线性,提升神经网络模型表达能力(数据往往线性不可分 )。
几种**函数:
Sigmoid:常用来做二分类任务,会造成梯度消失
Tanh:与sigmod函数曲线相近。两个函数输入很大或是很小时,输出几乎平滑,梯度很小,不利于权重更新。不同的是输出区间,tanh的输出区间是在(-1,1)之间,函数以0为中心。比sigmoid 好。一般二分类问题中,隐藏层用tanh函数,输出层用sigmod函数。
Relu:f(x)=max(0,x)
Softmax:常用在多分类神经网络输出
Leaky relu
Elu
Maxout
几种损失函数
二次代价函数
交叉熵代价函数
梯度消失
使用sigmoid**函数,会造成梯度消失的问题。
在输入x大于10后,计算sigmoid的斜率会约等于0,而更新w是一个累乘的过程,就会使前面的w值计算结果无限接近与0,造成梯度消失问题
可视化神经网络演示网页
https://cs.stanford.edu/people/karpathy/convnetjs/demo/classify2d.html
正则化,提高神经网络的泛化能力
神经元越多,越能表示复杂的模型,但是过拟合的风险也越高
数据预处理
原始数据—> 以0 为中心化 -à归一化处理 保证所有数据都是在(0,1)之间
Numpy.mean
https://blog.csdn.net/lilong117194/article/details/78397329
mean()函数功能:求取均值
经常操作的参数为axis,以m * n矩阵举例:
axis 不设置值,对 m*n 个数求均值,返回一个实数
axis = 0:固定列,压缩行,对各列求均值,返回 1* n 矩阵
axis =1 :固定行,压缩列,对各行求均值,返回 m *1 矩阵
numpy.std
https://blog.csdn.net/chixujohnny/article/details/51106481
计算矩阵标准差
axis=0计算每一列的标准差
axis=1计算每一行的标准差
权重初始化
权重初始化的时候,不能全是1,或者全是2等等,因为无论是几这样反向传播回来的时候都是朝1个方向去更新的。相当于这个神经网络迭代太慢了或者太弱了
通常要进行高斯初始化或者随机初始化。
偏置b 初始化一般是0或者1 对结果影响很小
Droup-Out
为了防止过拟合
每次随机选择神经元。
假如设定 droup-out率 保留率 60% 就是每次随机选择60%的神经元去玩前向传播+反向传播
用迭代次数去弥补神经元少的问题
Anaconda
anaconda search -t conda tensorflow 查找tensorflow 有哪些可安装的库
anaconda show ….. 搜索出安装这个库 需要什么命令