版权声明:随便转载,互相学习,注明来源即可,不想注明也没事 https://blog.csdn.net/yangwohenmai1/article/details/89061818
本系列文章是对《Python深度学习》这本书阅读过程中,提炼出来的读书笔记。
《Python深度学习》这本书的作者是Kreas之父,也是Tensorflow框架的贡献者,本书的特点是,作者从一个编程学习者的角度来描述机器学习,而不是堆上来复杂的数学公式和函数变换。所有的数学理论或者公式,都用程序的方式描述出来,对于没有数学功底的开发者来说是一个很大的福利。不过当然,后期还是离不开数学,但作为入门来说这本书就相当的好了。
本章讲的是循环神经网络使用过程中的一些细节以及优化方法。
本章知识点:
1.dropout技术
dropout技术前面讲过,属于神经网络通用的技术,但是在循环神经网络的用法稍有不同,使用时对每个时间步使用相同的dropout掩码,也就是舍弃相同的单元,而不是让dropout掩码随机变化。毕竟网络每次循环都舍弃掉不同的神经单元,那计算结果可能就不好了。
这个问题如果你使用Kreas的话就不用担心,因为Yarin Gal同学已经帮你在Kreas中处理好了这个问题。
2.循环层的堆叠
堆叠循环层其实就是记住在中间层加上一句return_sequences = True就好了,保证中间层能给下一层传递一个完整的序列。
3.双向RNN
双向RNN主要适用于自然语言分析这种顺序不重要的序列分析,一句话正着看一遍,倒着看一遍,或许能领悟更多信息。
4.CNN+RNN组合网络
这个组合和也是适用于自然语言分析这种顺序不重要的序列分析,先在很长的序列中通过CNN提取出更高端的特征,然后拼接成小序列,就像池化效果一样,让RNN进行学习,这样效率就很高了。CNN的平移不变性也导致了不适用于在时间轴上有序的序列分析。