Mitchy
今日もキラキラしていこう♪

这里需要一步步从零开始(也不完全是0)建立神经网络,自己造一个弱化版的TensorFlow,能够更好的理解神经网络的原理。

虽然以后可能自己也不会再自己写搭建神经网络的代码,但是深入理解了神经网络的构造之后,就能更好的分析自己的输入和得到的输出,来发现可能会出现的问题(比如有些点一直都被激活或者一直都不会被激活,训练的时候需要关注这样是否会产生误差)

所以在Python中,我们首先定义Node这个Object,它具有输入节点,输出节点,值和梯度4个properties,并且有forward和backward这2个method。

然后建立subclass,就是具体Node的类型,有Input,Linear,Sigmoid,MSE,除了Input只有反馈没有前馈(因为没啥好计算的)之外大家都有前馈和反馈的method,并且每种Node的计算方法不一样,properties也不一样(类似function的输入)。

最后是MiniFlow自己的Method,topological_sort(), forward_and_backward(), sgd_update()。

topological_sort():把一个表图变换成线性流程

forward_and_backward():对每一个节点各自调用前馈和反馈函数

sgd_update():根据weight,bias,learning_rate计算新的weight和bias

还涉及到batch_size,就是指一次循环中取的样本数量,越多越精确,因为如果数据集很大的话用gd内存会不够,所以就用速度快精度也不太差的sgd。

扩展阅读:

至此MiniFlow就建好了,完全可以用在MNIST上了!

posted on 2020-08-09 21:21  Mitchy  阅读(159)  评论(0编辑  收藏  举报