MNIST 数字识别和数据持久化--step by step 入门TensorFlow(三)

MNIST 数字识别和数据持久化–step by step 入门TensorFlow(三)

标签:tensorflow


我们将采用Jupyter notebook交互式编程的方式,通过一步步代码的讲解,学习Tensorflow 编程。推荐使用Jupyter notebook作为开发环境按照文中的代码step by step 的学习。

文章列表:
Tensorflow基础知识与神经网络构建–step by step 入门TensorFlow(一)
深层神经网络实现–step by step 入门TensorFlow(二)
MNIST 数字识别和数据持久化–step by step 入门TensorFlow(三)

一个完整的MNIST 数字识别代码

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
# 数据集参数
input_dim = 784
output_dim = 104
# 神经网络参数
h1_dim = 500
batch_size = 100
learning_rate_base = 0.8
learning_rate_decay = 0.99 # 学习率的衰减率
regularization_rate = 0.0001 # 正则化项系数
training_step = 30000
moving_average_decay = 0.99 # 滑动平均衰减率

def net(input_tensor, avg_class, w1,b1,w2,b2):
    # 不使用滑动平均类
    if avg_class == None:
        h1 = tf.nn.relu(tf.matmul(input_tensor, w1) + b1)
        output = tf.matmul(h1, w2) + b2
        return output
    # 使用滑动平均类
    else:
        h1 = tf.nn.relu(tf.matmul(input_tensor, avg_class.average(w1) + avg_class.average(b1)))
        return tf.matmul(h1,avg_class.average(w2) + avg_class.average(b2))

def train(mnist):
    x = tf.placeholder(tf.float32, shape=[None,784], name="x_input")
    y_ = tf.placeholder(tf.float32, shape=[None, 10], name="y_input")

    w1 = tf.Variable(tf.truncated_normal([input_dim, h1_dim], stddev=0.1))
    b1 = tf.Variable(tf.constant(0.1, shape=[h1_dim]))
    w2 = tf.Variable(tf.truncated_normal([h1_dim, output_dim], stddev=0.1))
    b2 = tf.Variable(tf.constant(0.1, shape=[output_dim]))

    y = net(x, None, w1, b1, w2, b2)
    # 使用滑动平均
    global_step = tf.Variable(0, trainable=False)
    variable_averages = tf.train.ExponentialMovingAverage(moving_average_decay,global_step)
    variable_averages_op = variable_averages.apply(tf.trainable_variables())

    average_y = net(x, variable_averages, w1, b1, w2, b2)

    # argmax(y_, 1) 提取第1维度最大的,即为1的那个,即把10个数的向量变为1个数的答案
    cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=y, labels=tf.argmax(y_, 1))
    cross_entropy_mean = tf.reduce_mean(cross_entropy)

    # 计算L2正则化损失函数
    regularizer = tf.contrib.layers.l2_regularizer(regularization_rate)
    regularizati
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值