TensorFlow搭建神经网络最佳实践

一、TensorFLow完整样例

在MNIST数据集上,搭建一个简单神经网络结构,一个包含ReLU单元的非线性化处理的两层神经网络。在训练神经网络的时候,使用带指数衰减的学习率设置、使用正则化来避免过拟合、使用滑动平均模型来使得最终的模型更加健壮。

程序将计算神经网络前向传播的部分单独定义一个函数inference,训练部分定义一个train函数,再定义一个主函数main。

完整程序:

    #!/usr/bin/env python3 
    # -*- coding: utf-8 -*- 
    """ 
    Created on Thu May 25 08:56:30 2017 
     
    @author: marsjhao 
    """ 
     
    import tensorflow as tf 
    from tensorflow.examples.tutorials.mnist import input_data 
     
    INPUT_NODE = 784 # 输入节点数 
    OUTPUT_NODE = 10 # 输出节点数 
    LAYER1_NODE = 500 # 隐含层节点数 
    BATCH_SIZE = 100 
    LEARNING_RETE_BASE = 0.8 # 基学习率 
    LEARNING_RETE_DECAY = 0.99 # 学习率的衰减率 
    REGULARIZATION_RATE = 0.0001 # 正则化项的权重系数 
    TRAINING_STEPS = 10000 # 迭代训练次数 
    MOVING_AVERAGE_DECAY = 0.99 # 滑动平均的衰减系数 
     
    # 传入神经网络的权重和偏置,计算神经网络前向传播的结果 
    def inference(input_tensor, avg_class, weights1, biases1, weights2, biases2): 
      # 判断是否传入ExponentialMovingAverage类对象 
      if avg_class == None: 
        layer1 = tf.nn.relu(tf.matmul(input_tensor, weights1) + biases1) 
        return tf.matmul(layer1, weights2) + biases2 
      else: 
        layer1 = tf.nn.relu(tf.matmul(input_tensor, avg_class.average(weights1)) 
                       + avg_class.average(biases1)) 
        return tf.matmul(layer1, avg_class.average(weights2))\ 
                 + avg_class.average(biases2) 
     
    # 神经网络模型的训练过程 
    def train(mnist): 
      x = tf.placeholder(tf.float32, [None,INPUT_NODE], name='x-input') 
      y_ = tf.placeholder(tf.float32, [None, OUTPUT_NODE], name='y-input') 
     
      # 定义神经网络结构的参数 
      weights1 = tf.Variable(tf.truncated_normal([INPUT_NODE, LAYER1_NODE], 
                            stddev=0.1)) 
      biases1 = tf.Variable(tf.constant(0.1, shape=[LAYER1_NODE])) 
      weights2 = tf.Variable(tf.truncated_normal([LAYER1_NODE, OUTPUT_NODE], 
                            stddev=0.1)) 
      biases2 = tf.Variable(tf.constant(0.1, shape=[OUTPUT_NODE])) 
     
      # 计算非滑动平均模型下的参数的前向传播的结果 
      y = inference(x, None, weights1, biases1, weights2, biases2) 
       
      global_step = tf.Variable(0, trainable=False) # 定义存储当前迭代训练轮数的变量 
     
      # 定义ExponentialMovingAverage类对象 
      variable_averages = tf.train.ExponentialMovingAverage( 
                MOVING_AVE
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值