25天看完了吴恩达的机器学习以及《深度学习入门》和《tensorflow实战》两本书,吴恩达的学习课程只学了理论知识,另外两本书的代码自己敲了一遍,感觉过的太快,趁着跑cGAN的时间把两本书的知识点总结下,然后继续深度学习的课程。欢迎小伙伴一起学习~
另外,本文先把框架搭好,后续会一直补充细节和知识点。
最后,本文参考的书是《深度学习入门》斋藤康毅著,十分推荐初学者使用。
本文的代码地址
- 从训练数据随机抽取一部分数据
- 带入模型计算梯度
- 根据梯度更新参数
- 重复步骤1,2,3
首先定义两层神经网络的类并初始化变量,类中包含了计算损失、准确率、梯度更新等函数。
这里保存参数使用的字典形式,构建的神经层使用的OrderDict,目的是保存神经层的顺序
定义了预测函数、计算损失和准确率,前面提到,我们把每一神经层模块化为一个类,类中主要包含了前向传播forward()和反向传播backward()
这里主要用到全连接层和relu层两个类,在文末给出代码
接下来是根据损失来计算梯度,反向传播backward()
最后,导入数据,定义训练
至此,我们的简易的使用反向传播算法的两层神经网络搭建和训练就完成啦~