import tensorflow as tf
mnist = tf.keras.datasets.mnist
(x_train,y_train),(x_test,y_test) = mnist.load_data()
x_train,x_test = x_train/255.0,x_test/255.0#把输入特征进行归一化
#使0-255之间的灰度值变成0-1之间的数值,把输入特征的数值变小,更适合神经网络吸收
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(),#把输入特征拉直为一维数组,拉直为784个数值
tf.keras.layers.Dense(128,activation='relu'),#定义第一层,有128个神经元
tf.keras.layers.Dense(10,activation='softmax')#定义第二层有10个神经元,用softmax,使输出符合概率分布
])
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
#由于让输出符合概率分布了,不是原始输出,所以from_logits是False
metrics=['sparse_categorical_accuracy']
#数据集中的标签是数值,输出是概率分布,所以使用sparse_categorical_accuracy
)
model.fit(x_train,y_train,batch_size=32,epochs=5,validation_data=(x_test,y_test),validation_freq=1)
#在fit中执行训练过程,每次喂入网络32组数据,数据集迭代5次,每迭代一次训练集执行一次测试集的评测
model.summary()
#准确率看后面 val_sparse_categorical_accuracy: 0.9767