北大人工智能课程学习记录:神经网络八股

模块化设计神经网络

前向传播

前向传播的目的是搭建网络,设计网络结构。

一般新建一个forward.py文件描述前向传播过程,

一般新建三个函数,forward给出前向传播的设计,给出从输入到输出的通路

定义的时候要记住forward有两个参数,一个是x,一个正则化权重regularizer

forward函数定义了前向传播过程,包括wby返回y

第二个函数与参数w有关,有两个参数

包括w的形状shape,正则化权重regularizer。

这个函数需要给w赋初值,使用tf.Variable()实现,括号中写赋初值的方法。

这个函数还要加一句,把每个w的正则化损失加到总损失losses中,返回w

第三个函数与参数b有关,b是偏差。其参数是b的形状shape,就是某层中b的个数。

这个函数要给b赋初值tf.Variable(),返回b。

扫描二维码关注公众号,回复: 1839882 查看本文章



反向传播

反向传播就是训练网络,优化网络参数。

新建一个backward.py文件,描述反向传播过程。

在backward函数中,使用placeholder给输入x和y_占位。


利用forward模块复现前向传播设计的网络结构。计算求得y。

定义轮数计数器global_step。定义损失函数loss,loss函数可以

选择均方误差,自定义或交叉熵,表示计算的y与标准答案y_的差距。



可能使用正则化,指数衰减学习率、滑动平均公用g s。



反向传播函数要定义训练过程train_step。

用with结构初始化所有参数,用for循环迭代steps轮。每轮会调用sess.run

执行训练过程。没运行一定训练轮数,打印当前loss信息。


python引入了来判断所运行文件是否是主文件。

如果是主文件则执行backward函数。

最后把opt4_7.py(分界程序)用模块化程序实现。

代码实现:


数据集生成文件:


前向传播文件:


反向传播文件:



运行结果:





猜你喜欢

转载自blog.csdn.net/weixin_39773661/article/details/80868144