当前位置:   article > 正文

tensorflow实现神经网络的优化_tcn可以用智能优化算法

tcn可以用智能优化算法

tensorflow笔记系列文章均参考自中国大学Mooc上北京大学软件与微电子学院曹建老师的《Tensorflow笔记2》课程。曹建老师讲的非常棒,受益良多,强烈建议tensorflow初学者学习。

1 复杂度和学习率

1.1 神经网络复杂度

神经网络复杂度多用神经网络层数和神经网络参数的个数来表示。

空间复杂度:

  • 层数 = 隐藏层层数 + 1个输出层。例如下图的神经网络为两层(1层隐藏层 + 1个输出层)
  • 总参数 = 总w + 总b。例如下图的神经网络第一层参数个数为3*4+4,第二层神经网络个数为4*2+2,所以一共有26个参数。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dHLvFh2p-1596169483071)(C:\Users\xiao\AppData\Roaming\Typora\typora-user-images\image-20200730110726117.png)]

时间复杂度:

  • 乘加运算的次数,例如上图的神经网络第一层经历了3*4次运算,第二层经历了4*2次运算,一共运算次数是20次。

1.2 神经网络学习率

对于学习率来说,我们知道的是,学习率设置过小,模型收敛会很慢,学习率设置过大,模型可能不收敛。那么怎样设置一个合适的学习率呢,可以使用指数衰减学习率来解决这个问题。公式如下:

指数衰减学习率 = 初始学习率*学习率衰减率**(当前轮数/多少轮衰减一次)

1.3 激活函数

优秀的激活函数:

  • 非线性:激活函数非线性时,多层神经网络可逼近所有函数
  • 可微性:优化器大多用梯度下降更新参数
  • 单调性:当激活函数是单调的,能保证单层网络的损失函数是凸函数
  • 近似恒等性:f(x)约等于x,当参数初始化为随机小值时,神经网络更稳定

激活函数输出值的范围:

  • 激活函数输出为有限值时,基于梯度的优化方法更稳定
  • 激活函数输出为无限值时,建议调小学习率

2 损失函数

**损失函数(loss)**就是预测值与已知答案的差距,神经网络的优化目标就是找到一套参数,使得损失函数的值最小。

损失函数的定义常使用均方误差(mse),在tensorflow中可以用以下方式来定义:loss_mse = tf.reduce_mean(tf.square(y_ - y)),其中y_是真实值,y是预测值。

除此之外,损失函数的定义还能使用均方误差和交叉熵,自定义损失函数就不介绍了,下面介绍一下交叉熵函数。

**交叉熵函数CE(Cross Entropy)**表示两个概率分布之间的距离:
H ( y − , y ) = − ∑ y − ∗ l n y H(y_ -, y) = -\sum{y_ -*lny} H(y,

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/338869
推荐阅读
相关标签
  

闽ICP备14008679号