搭建模块化神经网络八股
一、搭建模块化神经网络八股
1,前向传播:由输入到输出,搭建完整的网络结构
描述前向传播的过程需要定义三个函数:
def forward(x,regularizer):
w=
b=
y=
return y
第一个函数forword()完成网络结构的设计,从输入到输出搭建完整的网络结构,实现前向传播过程。该函数中,参数x为输入,regularizer为正则化权重,返回值为预测或分类结果y。
def get_weight(shape,regularizer):
w=tf.Variable()
tf.add_to_collection('losses',tf.contrib.layers.12_regularizer(regularizer)(w))
return w
第二个函数get_weight()对参数w设定,该函数中,参数shape表示参数w的形状,regularizer表示正则化权重,返回值为参数w。其中,tf.variable()给参数w赋初值,tf.add_to_collection()表示将参数w正则化损失加到总损失losses中。
def get_bias(shape):
b=tf.Variable()
return b
第三个函数get_bias()对参数b进行设定,该函数中,参数shape表示参数b的形状,返回值为参数b,其中,tf.Variable()表示给b赋初值。
2,反向传播:训练网络,优化网络参数,提高模型准确性。
get backward():
x=tf.placeholder()
y_=tf.placeholder()
y=forward.forward(x,REGULARIZER)
global_step=tf.Variable(0,trainable=False)
loss=
函数backward()中,placeholder()实现对数据集x和标准答案y_占位,forward.forward()实现前向传播的网络结构,参数global_step表示训练轮数,设置为不可训练型参数。
在训练网络模型时,常将正则化、指数衰减学习率和滑动平均这三个方法作为模型优化方法。
1)在tensorflow中,正则化表示为:损失值+正则化项
首先计算预测结果与标准答案的损失值
其次,总损失值为预测结果与标准答案的损失值加上正则化项
2)在tensorflow中,指数衰减学习率表示为:
3)在tensorflow中,滑动平均表示为:
其中,滑动平均和指数衰减学习率中的global_step为同一个参数。
3,用with结构初始化所有参数
with tf.Session() as sess:
init_op=tf.global_variables_initializer()
sess.run(init_op)
for i in range(STEPS):
sess.run(train_step,feed_dict={x: ,y_: })
for i %轮数 ==0:
其中,with结构用于初始化所有参数信息以及实现调用训练过程,并打印出loss值。
4,判断python运行文件是否为主文件
if __name=='__main__':
backward()
该部分用来判断python运行的文件是否为主文件,若是主文件,则执行backwar()函数。