且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

TF之GD:基于tensorflow框架搭建GD算法利用Fashion-MNIST数据集实现多分类预测(92%)

更新时间:2022-08-18 07:52:12

输出结果

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))

#定义优化器

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))