import tensorflow as tf
#定义数据集对象
mnist=tf.keras.datasets.mnist#28*28的图像
(x_train,y_train),(x_test,y_test)=mnist.load_data()#读取数据集
x_train,x_test=x_train/255.0,x_test/255.0#图像归一化
#定义模型
model=tf.keras.models.Sequential([
#将输入拉成一维,全连接层只能接收一维数据
tf.keras.layers.Flatten(input_shape=(28,28)),
tf.keras.layers.Dense(128,activation='relu'),#第一个fc层(全连接层)
tf.keras.layers.Dropout(0.2),#随机丢弃
tf.keras.layers.Dense(10,activation='softmax')#输出层,激活函数
])
model.compile(optimizer='adam',
# loss: 交叉熵
# 如果目标是one-hot 编码,比如二分类[0,1] [1,0],损失函数用categorical_crossentropy
# 如果目标是数字编码,比如二分类0/1, 损失函数用 sparse_categorical_crossentropy
loss='sparse_categorical_crossentropy',#损失函数
metrics=['accuracy']#准确率
)
model.fit(x_train,y_train,epochs=10)#训练
model.evaluate(x_test,y_test,verbose=2)
test_img=x_test[0:2]
result=model.predict(test_img)
for r in result:
print("预测结果:",tf.argmax(r).numpy())
#显示图像
import matplotlib.pyplot as plt
plt.figure("img1")
plt.imshow(test_img[0])
plt.show()
plt.figure("img2")
plt.imshow(test_img[1])
plt.show()