搭建模块化的神经网络模板

1.前向传播就是搭建网络,设计网络结构(forward.py)

前向传播网络结构:

#前向传播网络结构
def forword(x, regularizer):
    w=
    b=
    y=

    return y

定义权重函数:

#定义权重函数
def get_weight(shape, regularizer):
    w = tf.Variable( )
    #tf.add_to_collection: 将元素tf.contrib.layers.l2_regularizer(regularizer)(w)添加到列表losses中
    #tf.contrib.layers.l2_regularizer表示l2正则化
    tf.add_to_collection('losses', tf.contrib.layers.l2_regularizer(regularizer)(w))

    return w

定义偏置量:

#定义偏置量:
def get_bias(shape):
    b = tf.Variable( )

    return b

 

2.反向传播就是训练网络,优化网络参数(backword.py)

反向传播网络结构:

def backword( ):

    x = tf.placeholder( )
    y_ = tf.placeholder( )

    y = forward.forword(x, REGULARIZER) #前向传播网络结构,计算求y

    global_step = tf.Variable(0, trainable = False) #定义轮数计数器global_step

    loss = #定义损失函数,可以选用以下均方误差、交叉熵、自定义,表示计算出来的y与y_的差距


    #loss可以是(如果使用均方误差):
    y与y_的差距(loss_mse) = tf.reduce_mean(tf.square(y-y_))

    #也可以是(如果使用交叉熵,则用下面两行代码):
    ce = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=y,labels=tf.argmax(y_, 1))
    y与y_的差距(cem) = tf.reduce_mean(ce)


    #加入正则化后(如果使用正则化)
    loss = y与y_的差距 + tf.add_n(tf.get_collection('losses'))


    #指数衰减学习率(如果使用指数衰减学习率,动态计算学习率)
    learning_rate = tf.train.exponential_decay(
        LEARNING_RATE_BASE,
        global_step,
        数据集总样本数 / BATCH_SASE,
        LEARNING_RATE_DECAY,
        staircase=True
     )


    #训练过程
    train_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss,global_step=global_step)


    #如果用滑动平均:
    ema = tf.train.ExponentialMovingAverage(MOVING_AVERAGE_DECAY,global_step)
    ema_op = ema.apply(tf.trainable_variables())
    with tf.control_dependencies([train_step, ema_op]):
        train_op = tf.no_op(name='train')


    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_: })
        if i % 轮数 ==0:
            print( )

判断运行的是否为主文件:

#判断运行的是否为主文件
if __name__=='__main__':
    backward()

MNIST数据集下载地址:https://download.csdn.net/download/kdongyi/10666285

本人简书文章地址:https://www.jianshu.com/u/3dbb0292f6a4

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值