最简CNN based RNN源码
1.源码:
GitCode - 全球开发者的开源社区,开源代码托管平台
最终的效果:
- 数据集是20个周期,1024点sin(x)加了偏置。其中用于训练的有1024-300点。
- 最后300点用来进行测试。
- 上面的右侧输出的,其实对应左侧x=73之后的波形,周期准确。
- 训练的参数没有调太好,我看到过某一次出现过非常漂亮的正弦波。
- 右侧的归一化没有还原,原始的信号是:[1,3],后面预测y轴震荡只有[0,1]
- 在选用激活函数时,不可以使用现行的Relu,必须引入非线性激活函数,我实际选择的是elu,Relu相当于采用了线性式拟合。它不行,你怎么训练出来的都是直线。
- 代码只有不到150行,还包含了一些调试语句。
本文参考了《深度学习与交通大数据实践》3.3.3,有修改。这基本是我个人临摹时,能够基本理清思路的第一版机器学习代码。我能够将其工程化。
2.额外的说明
1。tensor的张量运算,大概花费2小时左右,把所有的基本操作笔记下来,是值得的。
2。pytorch里的常用机器学习辅助函数,也值得花力气过一遍,知晓调用和语义。传统的CNN机器学习的模型搭建,难度不大。是可以用调试式编程解决的。
3。Yolo是一个足够好用的范本,可以追随着各个模型的差异,进行理解。
4。深度学习与交通大数据实战 (豆瓣),如果项目工期足够紧,花费大概20课时,自习这本书,能给你足够多的知识来搭建自己的机器学习模型。它包含python语法,tensor运算,pytorch语法,一般的模型,以及很多应用案例。
5。如果是徒手进行模型搭建,记得这件事:模型最前方的卷积核的引入,主要的目的是基于效能的考虑,把数据的维度降下来,类似一种特征抽样。
6。最初进行模型搭建时,算法有效性核查的最佳实践,是用数据本身验证,就是构造一个output,维度精确等于input,如果能在卷积运算等多层处理后,大致能够还原回去,误差不大,说明模型本身没有问题。