Tensorflow学习笔记阶段整理——搭建神经网络的步骤

搭建神经网络的步骤

到此为止,搭建神经网络我们已经全部学完,之后的程序会越来越复杂,所以我们要使用模块化的设计思想了。
神经网络程序中的三个模块:

  • generateds.py:定义训练所用的数据集,依据具体问题而定。

  • forward.py:前向传播的目的就是搭建网络,设计网络结构。在这个模块中,给出从输入到输出的数据通路,定义了前向传播过程,定义时要记住有两个参数,分别是输入及正则化参数。

    def forward(x, regularizer):
        w=
        b=
        y=
        return y
    
    def get_weight(shape,regularizer):
        w=tf.Variable( )#给w赋初值
        tf.add_to_collection(‘losses’,tf.contrib.layers.l2_regularizer(regularizer)(w))#定义损失函数时使用
        return w
    
    def get_bias(shape): #shape就是某层中b的个数
        b = tf.Variable( )
        return b
    
  • backward.py:反向传播就是训练网络,优化网络参数。该模块定义了损失函数、反向传播过程。

     def backward():
         x = tf.placeholder(  )
         y_ = tf.placeholder(  )
         y = forward.forward(x,REGULARIZER)#利用forward模块复现前向传播设计的网络结构,计算求得y
         global_step = tf.Variable(0,trainable=False)
         #loss可以选择均方误差、自定义或者交叉熵
         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))
         #loss_ce=tf.reduce_mean(ce)
         #加入正则化:(可选)
         #loss = loss + tf.add_n(tf.get_collection(‘losses’))
         #使用指数衰减学习率,动态计算学习率(可选)
         #learning_rate = tf.train.exponential_decay(
             LEARNING_RATE_BASE,
             global_step,
             数据集总样本数/BATCH_SIZE,
         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()
    

以上学习内容来自中国MOOC网课程:https://www.icourse163.org/course/PKU-1002536002

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值