北大人工智能课程学习记录:神经网络八股
模块化设计神经网络
前向传播
前向传播的目的是搭建网络,设计网络结构。
一般新建一个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。
反向传播
反向传播就是训练网络,优化网络参数。
新建一个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(分界程序)用模块化程序实现。
代码实现:
数据集生成文件:
前向传播文件:
反向传播文件:
运行结果: