import tensorflow as tf mnist = tf.keras.datasets.mnist #加载mnist数据集 (train_images,train_labels),(test_images,test_labels) = mnist.load_data() train_images, test_images = train_images/255.0, test_images/255.0 #归一化到0-1 print("Train image shape:",train_images.shape,"Train label shape:",train_labels.shape) #打印图像大小和标签数 print("Test image shape:",test_images.shape,"Test label shape:",test_labels.shape) print("image data:",train_images[1]) #具体看一幅image的数据 print("label data:",train_labels[1]) import matplotlib.pyplot as plt def plot_image(image): plt.imshow(image.reshape(28,28),cmap='binary') plt.show() plot_image(train_images[1]) #搭建模型 model = tf.keras.models.Sequential([ tf.keras.layers.Flatten(input_shape=[28, 28]), tf.keras.layers.Dense(128, activation='relu'), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(10, activation='softmax') ]) #编译 model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) #训练模型 model.fit(train_images,train_labels, epochs=5, batch_size=64) model.evaluate(test_images,test_labels)注释代码,并说明实现的功能,生成实验总结
时间: 2024-02-13 21:01:32 浏览: 165
注释代码如下:
```python
import tensorflow as tf
# 加载 mnist 数据集
mnist = tf.keras.datasets.mnist
(train_images,train_labels),(test_images,test_labels) = mnist.load_data()
# 将图像数据归一化到 0-1
train_images, test_images = train_images/255.0, test_images/255.0
# 打印图像大小和标签数
print("Train image shape:",train_images.shape,"Train label shape:",train_labels.shape)
print("Test image shape:",test_images.shape,"Test label shape:",test_labels.shape)
# 打印一幅图像数据和标签
print("image data:",train_images[1])
print("label data:",train_labels[1])
import matplotlib.pyplot as plt
# 定义一个函数来显示图像
def plot_image(image):
plt.imshow(image.reshape(28,28),cmap='binary')
plt.show()
# 显示第二幅图像
plot_image(train_images[1])
# 搭建模型
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=[28, 28]), # 展开输入图像
tf.keras.layers.Dense(128, activation='relu'), # 全连接层,128 个神经元,激活函数为 relu
tf.keras.layers.Dropout(0.2), # 随机失活层,防止过拟合
tf.keras.layers.Dense(10, activation='softmax') # 输出层,10 个神经元,激活函数为 softmax
])
# 编译模型
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
# 训练模型
model.fit(train_images,train_labels, epochs=5, batch_size=64)
# 在测试集上评估模型
model.evaluate(test_images,test_labels)
```
实现的功能:
1. 加载 MNIST 数据集并进行训练集和测试集的划分;
2. 将图像数据归一化到 0-1;
3. 打印训练集和测试集的图像大小和标签数量;
4. 打印一幅图像数据和标签;
5. 定义一个函数来显示图像;
6. 搭建一个简单的神经网络模型,包含一个展开层,一个全连接层,一个随机失活层和一个输出层;
7. 编译模型,指定优化器、损失函数和评价指标;
8. 在训练集上训练模型,并评估在测试集上的表现。
实验总结:
本实验使用 TensorFlow 2.x 搭建了一个简单的神经网络模型,并在 MNIST 数据集上进行了训练和测试。通过实验,我们了解了如何加载和处理数据集,如何搭建神经网络模型,如何编译和训练模型,以及如何在测试集上评估模型的性能。同时,我们也学会了如何使用 matplotlib 库来显示图像。这些知识对于我们进一步深入学习深度学习和计算机视觉等相关领域具有很大的帮助。
阅读全文