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