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

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

# -*- 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-07-31 17:57:24

tensorflow 基础学习八:重构MNIST神经网络的相关文章

tensorflow 基础学习五:MNIST手写数字识别

MNIST数据集介绍: from tensorflow.examples.tutorials.mnist import input_data # 载入MNIST数据集,如果指定地址下没有已经下载好的数据,tensorflow会自动下载数据 mnist=input_data.read_data_sets('.',one_hot=True) # 打印 Training data size:55000. print("Training data size: {}".format(mnist.

tensorflow 基础学习九:mnist卷积神经网络

mnist_inference.py: # -*- coding:utf-8 -*- import tensorflow as tf # 配置神经网络参数 INPUT_NODE=784 OUTPUT_NODE=10 IMAGE_SIZE=28 NUM_CHANNELS=1 NUM_LABELS=10 # 第一层卷积层的尺寸和深度 CONV1_DEEP=32 CONV1_SIZE=5 # 第二层卷积层的尺寸和深度 CONV2_DEEP=64 CONV2_SIZE=5 # 全连接层的节点个数 FC_

tensorflow 基础学习二:实现一个神经网络

tensorflow变量 在tensorflow中,变量(tf.Variable)的作用就是用来保存和更新神经网络中的参数,在声明变量的同时需要指定其初始值. tensorflow中支持的随机数生成器: 函数名称 随机数分布 主要参数 tf.random_normal 正态分布 平均值.标准差.取值类型 tf.truncated_normal 正态分布,但如果随机出来的值偏离平均值超过2个标准差,那么这个数将会被重新随机 平均值.标准差.取值类型 tf.random_uniform 平均分布 最

tensorflow 基础学习三:损失函数讲解

交叉熵损失: 给定两个概率分布p和q,通过q来表示p的交叉熵为: 从上述公式可以看出交叉熵函数是不对称的,即H(p,q)不等于H(q,p). 交叉熵刻画的是两个概率分布之间的距离,它表示通过概率分布q来表示概率分布p的困难程度.所以使用交叉熵作为 神经网络的损失函数时,p代表的是正确答案,q代表的是预测值.当两个概率分布越接近时,它们的交叉熵也就越小. 由于神经网络的输出并不是一个概率分布,所以需要先使用softmax将网络输出变成一个概率分布,再计算交叉熵. 比如,原始的神经网络输出为y1,y

深度学习框架-Tensorflow基础学习

Tensorflow简介 1. Tensorflow是一个编程系统,使用图来表示计算任务.使用图来表示计算任务. 图中的节点被称之为 op (operation 的缩写). 一个 op 获得 0 个或多个 Tensor, 执行计算, 产生 0 个或多个 Tensor. 每个 Tensor 是一个类型化的多维数组. TensorFlow 程序通常被组织成一个构建阶段和一个执行阶段. 在构建阶段, op 的执行步骤 被描述成一个图. 在执行阶段, 使用会话执行执行图中的 op. 2. Tensorf

tensorflow 基础学习七:模型的持久化

tf.train.Saver类的使用 保存模型: import tensorflow as tf v1=tf.Variable(tf.constant(1.0,shape=[1]),name='v1') v2=tf.Variable(tf.constant(2.0,shape=[1]),name='v2') result=v1+v2 init_op=tf.global_variables_initializer() saver=tf.train.Saver() with tf.Session()

bootstrap基础学习八篇

bootstrap辅助类 a.对于文本颜色 以下不同的类展示了不同的文本颜色.如果文本是个链接鼠标移动到文本上会变暗: 类 描述 .text-muted "text-muted" 类的文本样式 .text-primary "text-primary" 类的文本样式 .text-success "text-success" 类的文本样式 .text-info "text-info" 类的文本样式 .text-warning &q

Struts2基础学习(八)—Struts2防止表单重复提交

一.原因      用户重复提交表单在某些场合将会造成非常严重的后果.例如,在使用信用卡进行在线支付的时候,如果服务器的响应速度太 慢,用户有可能会多次点击提交按钮,而这可能导致那张信用卡上的金额被消费了多次.因此,重复提交表单会对你的系统带来逻 辑影响,必须采取一些措施防止这类情况的发生.     用户重复提交同一个HTML表单的原因有:  一.快速多次点击了提交按钮:二.提交表单后按下浏览器的刷新按钮. 二.原理      Struts2已经内置了能够防止用户重复提交同一个HTML表单的功能

salesforce lightning零基础学习(八) Aura Js 浅谈一: Component篇

我们在开发lightning的时候,常常会在controller.js中写 component.get('v.label'), component.set('v.label','xxValue'); 小伙伴肯定有疑问这些方法是怎么定义的,lightning到底有多少已经声明的方法可供我们使用,此篇主要讲述aura framework为我们提供的 component的js的主要方法. 本人salesforce环境切换到lightning,URL为:https://zero-zhang-dev-ed