手書き認識-mnist深さの研究

 

 

手書き認識mnist

Mnistデータセットは、公式ウェブサイトからダウンロードできます。  http://yann.lecun.com/exdb/mnist/  55,000行(mnist.train)および10,000行をテストするために設定し、トレーニングデータ:ダウンロードされたデータセットは、2つの部分に分かれていますデータセット(mnist.test)。手書きと対応するラベルを含むデジタル画像:MNIST各データユニットは、2つの部分からなります。私たちは、これらのタグは「YS」に設定されている、「XS」にこれらの写真を入れました。そのようなトレーニングデータセットの写真のように、トレーニングデータセットとテストデータセットは、xsとYSが含まれているが、ラベルのトレーニングデータセットがmnist.train.labelsで、mnist.train.imagesです。

私たちは、それぞれの画像は28個のピクセルX28ピクセルが含まれている、画像は黒と白の写真であることを知っています。私たちは、この配列は、長さのベクトルに展開28x28 = 784で呼び出します。これにより、トレーニングデータセットMNIST、mnist.train.imagesは[60,000、784]形状のためテンソルです。

 

対応するラベルを有する各画像におけるMNIST、0〜9までの数字が描かれたデジタル画像で表されています。ワンホットエンコーディングを使用

単層(完全に接続された層)手書き数字認識

1、定義データプレースホルダ固有値[なし]、[784]ターゲット[なし]、[10]

tf.variable_scope有する(" データ" ):
    X = tf.placeholder(tf.float32、[なし]、[784 ])
    y_true = tf.placeholder(tf.float32、[なし]、[10])

2,建立模型 随机初始化权重和偏置,w[784,10],b= [10] y_predict = tf.matmul(x,w)+b

with tf.variable_scope("model"):
    w = tf.Variable(tf.random_normal([784,10],mean=0.0,stddev=1.0))
    b = tf.Variable(tf.constant(0.0,shape=[10]))
    y_predict = tf.matmul(x,w)+b

3,计算损失 loss 平均样本损失

with tf.variable_scope("compute_loss"):
    loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y_true,logits=y_predict))

4,梯度下降优化 0.1 步数 2000 从而得出准确率

with tf.variable_scope("optimizer"):
    train_op = tf.train.GradientDescentOptimizer(0.1).minimize(loss)

5,模型评估 argmax() reduce_mean

with tf.variable_scope("acc"):
    eq = tf.equal(tf.argmax(y_true, 1), tf.argmax(y_predict, 1))
    accuracy = tf.reduce_mean(tf.cast(eq,tf.float32))

加载mnist数据集

import tensorflow as tf
# 这里我们利用tensorflow给好的读取数据的方法
from tensorflow.examples.tutorials.mnist import input_data
def full_connected():
    # 加载mnist数据集
    mnist = input_data.read_data_sets("data/mnist/input_data",one_hot=True)

 

 

运行结果

accuracy: 0.08
accuracy: 0.08
accuracy: 0.1
accuracy: 0.1
accuracy: 0.1
accuracy: 0.1
accuracy: 0.1
accuracy: 0.1
accuracy: 0.14
accuracy: 0.14
accuracy: 0.16
accuracy: 0.16
accuracy: 0.18
accuracy: 0.2
accuracy: 0.2
accuracy: 0.2
accuracy: 0.24
accuracy: 0.24
accuracy: 0.24
accuracy: 0.26
accuracy: 0.26
accuracy: 0.26
accuracy: 0.28
accuracy: 0.28
accuracy: 0.3
accuracy: 0.3
accuracy: 0.32
accuracy: 0.32
accuracy: 0.32
accuracy: 0.36
accuracy: 0.4
accuracy: 0.4
accuracy: 0.4
accuracy: 0.42
accuracy: 0.44
accuracy: 0.44
accuracy: 0.44
accuracy: 0.44
accuracy: 0.44
accuracy: 0.46
accuracy: 0.46
accuracy: 0.46
accuracy: 0.46
accuracy: 0.46
accuracy: 0.48
accuracy: 0.48
accuracy: 0.48
accuracy: 0.48
accuracy: 0.48
accuracy: 0.48
accuracy: 0.52
accuracy: 0.52
accuracy: 0.54
accuracy: 0.54
accuracy: 0.54
accuracy: 0.54
accuracy: 0.56
accuracy: 0.56
accuracy: 0.56
accuracy: 0.58
accuracy: 0.6
accuracy: 0.6
accuracy: 0.62
accuracy: 0.62
accuracy: 0.62
accuracy: 0.62
accuracy: 0.62
accuracy: 0.62
accuracy: 0.62
accuracy: 0.62
accuracy: 0.62
accuracy: 0.62
accuracy: 0.62
accuracy: 0.62
accuracy: 0.64
accuracy: 0.66
accuracy: 0.66
accuracy: 0.66
accuracy: 0.66
accuracy: 0.66
accuracy: 0.66
accuracy: 0.68
accuracy: 0.7
accuracy: 0.7
accuracy: 0.7
accuracy: 0.7
accuracy: 0.72
accuracy: 0.74
accuracy: 0.76
accuracy: 0.78
accuracy: 0.78
accuracy: 0.8
accuracy: 0.8
accuracy: 0.82
accuracy: 0.82
accuracy: 0.82
accuracy: 0.84
accuracy: 0.84
accuracy: 0.84
accuracy: 0.84
Process finished with exit code 0

 对于使用下面的式子当作损失函数不太理解的:

tf.nn.softmax_cross_entropy_with_logits

请看这篇随笔:https://www.cnblogs.com/TimVerion/p/11237087.html

おすすめ

転載: www.cnblogs.com/TimVerion/p/11237063.html