代码如下
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
# 加载数据
fashion_mnist=tf.keras.datasets.fashion_mnist
(train_images,train_labels),(test_images,test_labels)=fashion_mnist.load_data()
class_names=['T-shirt/top','Trouser','Pullover','Dress','Coat','Sandal','Shirt','Sneaker','Bag','Ankle boot']
# 数据可视化
# plt.figure()
# plt.imshow(train_images[0])
# plt.colorbar()
# plt.grid(False)
# plt.show()
# 数据预处理
train_images=train_images/255.0
test_images=test_images/255.0
# 数据和标签可视化
# plt.figure(figsize=(10,10))
# for i in range(25):
# plt.subplot(5,5,i+1)
# plt.xticks([])
# plt.yticks([])
# plt.grid(False)
# plt.imshow(train_images[i],cmap=plt.cm.binary)
# plt.xlabel(class_names[train_labels[i]])
# plt.show()
# 构建模型
model=tf.keras.Sequential([
tf.keras.layers.Flatten(input_shape=(28,28)),
tf.keras.layers.Dense(128,activation='relu'),
tf.keras.layers.Dense(10)
])
# 训练模型
# model.compile(optimizer='adam',loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),metrics=['accuracy'])
# model.fit(train_images,train_labels,epochs=10)
# test_loss,test_acc=model.evaluate(test_images,test_labels,verbose=2)
# print('\nTest accuracy:',test_acc)
probability_model=tf.keras.Sequential([model,tf.keras.layers.Softmax()])
# predictions=probability_model.predict(test_images)
# class_names[np.argmax(predictions[0])]
# 数据预测可视化
def plot_image(i,predictions_array,true_label,img):
true_label,img=true_label[i],img[i]
plt.grid(False)
plt.xticks([])
plt.yticks([])
plt.imshow(img,cmap=plt.cm.binary)
predicted_label=np.argmax(predictions_array)
if predicted_label==true_label:
color='blue'
else:
color='red'
plt.xlabel('{} {:2.0f}% ({})'.format(class_names[predicted_label],100*np.max(predictions_array),class_names[true_label]),color=color)
def plot_value_array(i,predictions_array,true_label):
true_label=true_label[i]
plt.grid(False)
plt.xticks(range(10))
plt.yticks([])
thisplot=plt.bar(range(10),predictions_array,color='#777777')
plt.ylim([0,1])
predicted_label=np.argmax(predictions_array)
thisplot[predicted_label].set_color('red')
thisplot[true_label].set_color('blue')
# 保存模型
# probability_model.save_weights('fashion_mnist.h5')
# 加载模型
probability_model.load_weights('fashion_mnist.h5')
# 预测结果
predictions=probability_model.predict(test_images)
# 可视化某张图像的预测结果
def verify_predictions(i,predictions,test_labels,test_images):
plt.figure(figsize=(6,3))
plt.subplot(1,2,1)
plot_image(i,predictions[i],test_labels,test_images)
plt.subplot(1,2,2)
plot_value_array(i,predictions[i],test_labels)
plt.show()
ls=[0,27]
for i in ls:
verify_predictions(i,predictions,test_labels,test_images),来自Basic classification: Classify images of clothing
本文创建于2022.10.4/19.24,修改于2022.10.4/19.24