码迷,mamicode.com
首页 > 其他好文 > 详细

tensorflow 基础学习八:重构MNIST神经网络

时间:2018-01-20 21:30:51      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:return   one   dev   网络   设置   需要   而且   std   直接   

  使用前面介绍的技术,实践一个神经网络模型。将训练和测试分成两个独立的程序,训练网络的程序可以持续输出训练好的模型,测试程序可以每隔一段时间检验最新模型的正确率。

技术分享图片
# -*- coding:utf-8 -*-
import tensorflow as tf

# 定义神经网络结构相关的参数
INPUT_NODE=784
OUTPUT_NODE=10
LAYER1_NODE=500

# 通过tf.get_variable函数来获取变量。在训练神经网络时会创建这些变量;在测试时会通过
# 保存的模型加载这些变量的取值。而且更加灵活的是,因为可以在变量加载时将滑动平均变量
# 重命名,所以可以直接通过同样的名字在训练时使用变量自身,而在测试时使用变量的滑动
# 平均值。在这个函数中也会将变量的正则化损失加入损失集合。
def get_weight_variable(shape,regularizer):
    weights=tf.get_variable(weights,shape,initializer=tf.truncated_normal_initializer(stddev=0.1))
    
    if regularizer != None:
        tf.add_to_collection(losses,regularizer(weights))
    
    return weights

# 定义神经网络的前向传播过程
def inference(input_tensor,regularizer):
    # 如果在同一个程序中多次调用,在第一次调用之后需要将参数reuse设置为True
    with tf.variable_scope(layer1):
        weights=get_weight_variable([INPUT_NODE,LAYER1_NODE],regularizer)
        biases=tf.get_variable(biases,[LAYER1_NODE],initializer=tf.constant_initializer(0.0))
        layer1=tf.nn.relu(tf.matmul(input_tensor,weights)+biases)
        
    with tf.variable_scope(layer2):
        weights=get_weight_variable([LAYER1_NODE,OUTPUT_NODE],regularizer)
        biases=tf.get_variable(biases,[OUTPUT_NODE],initializer=tf.constant_initializer(0.0))
        layer2=tf.matmul(layer1,weights)+biases
        
    return layer2
        
    
mnist_inference.py

 

tensorflow 基础学习八:重构MNIST神经网络

标签:return   one   dev   网络   设置   需要   而且   std   直接   

原文地址:https://www.cnblogs.com/hypnus-ly/p/8321853.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!