使用前面介绍的技术,实践一个神经网络模型。将训练和测试分成两个独立的程序,训练网络的程序可以持续输出训练好的模型,测试程序可以每隔一段时间检验最新模型的正确率。
# -*- 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
原文地址:https://www.cnblogs.com/hypnus-ly/p/8321853.html
时间: 2024-10-09 13:17:51