TF之GD:基于tensorflow框架搭建GD算法利用Fashion-MNIST數據集實現多分類預測(92%)
輸出結果

Successfully downloaded train-images-idx3-ubyte.gz 9912422 bytes.
Extracting data/fashion\train-images-idx3-ubyte.gz
Successfully downloaded train-labels-idx1-ubyte.gz 28881 bytes.
Extracting data/fashion\train-labels-idx1-ubyte.gz
Successfully downloaded t10k-images-idx3-ubyte.gz 1648877 bytes.
Extracting data/fashion\t10k-images-idx3-ubyte.gz
Successfully downloaded t10k-labels-idx1-ubyte.gz 4542 bytes.
Extracting data/fashion\t10k-labels-idx1-ubyte.gz
(55000, 784)
(55000, 10)
Epoch: 0,acc: 0.7965
Epoch: 1,acc: 0.8118
Epoch: 2,acc: 0.8743
Epoch: 3,acc: 0.8997
Epoch: 4,acc: 0.9058
Epoch: 5,acc: 0.9083
Epoch: 6,acc: 0.9102
Epoch: 7,acc: 0.9117
Epoch: 8,acc: 0.9137
Epoch: 9,acc: 0.9147
Epoch: 10,acc: 0.9158
Epoch: 11,acc: 0.9166
Epoch: 12,acc: 0.9186
Epoch: 13,acc: 0.9191
Epoch: 14,acc: 0.9187
Epoch: 15,acc: 0.9195
Epoch: 16,acc: 0.9206
Epoch: 17,acc: 0.9207
Epoch: 18,acc: 0.9216
Epoch: 19,acc: 0.9215
Epoch: 20,acc: 0.9218
實現代碼
#TF之GD:基于tensorflow框架搭建GD算法利用Fashion-MNIST數據集實現多分類預測(92%)
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
fashion = input_data.read_data_sets('data/fashion', one_hot=True)
print(fashion.train.images.shape)
print(fashion.train.labels.shape)
batch_size = 100
batch_num = fashion.train.num_examples // batch_size
#定義X,Y參數
x = tf.placeholder(tf.float32, shape=[None, 784])
y = tf.placeholder(tf.float32, shape=[None, 10])
#定義W,B參數
W = tf.Variable(tf.truncated_normal([784, 10], stddev= 0.1))
b = tf.Variable(tf.zeros([10]) + 0.1)
#預測結果
prediction = tf.nn.softmax(tf.matmul(x, W) + b)
#使用交叉熵計算loss
cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(logits=prediction, labels=y))
#定義優(yōu)化器
train_step = tf.train.GradientDescentOptimizer(0.2).minimize(cross_entropy)
#判斷預測結果是否正確
correct_prediction = tf.equal(tf.argmax(prediction, 1), tf.argmax(y, 1))
#計算準確率,將bool值轉為float32
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for epoch in range(21):
for i in range(batch_num):
batch_xs, batch_ys = fashion.train.next_batch(batch_size)
sess.run(train_step, feed_dict={x: batch_xs, y:batch_ys})
acc = sess.run(accuracy, feed_dict={x:fashion.test.images, y:fashion.test.labels})
print('Epoch: '+str(epoch)+',acc: '+str(acc))