训练了一个神经网络模型,来对服装图像进行分类,例如运动鞋和衬衫。tf.keras,这是一个用于在TensorFlow中构建和训练模型的高级API。
from __future__ import absolute_import, division, print_function, unicode_literals
'''
通过该模块,python2可以调用python3的某些功能。
首先是可以做个性化的用法,比如你喜欢用print()而不是print,
更重要的是基本用以上几句就可以让python2和python3有良好的兼容性了。
'''
# 导入TensorFlow和tf.keras
import tensorflow as tf
from tensorflow import keras
# 导入辅助库
import numpy as np
import matplotlib.pyplot as plt
print(tf.__version__)
1.导入Fashion MNIST数据集
Fashion MNIST 数据集,其中包含了10个类别中共70,000张灰度图像。图像包含了低分辨率(28 x 28像素)的单个服装物品。
使用Fashion MNIST进行多样化,因为它比普通的MNIST更具挑战性。两个数据集都相对较小,用于验证算法是否按预期工作。它们是测试和调试代码的良好起点。
我们将使用60,000张图像来训练网络和10,000张图像来评估网络模型学习图像分类任务的准确程度。您可以直接从TensorFlow使用Fashion MNIST,只需导入并加载数据。
fashion_mnist = keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()
加载数据集并返回四个NumPy数组:
train_images和train_labels数组是训练集—这是模型用来学习的数据。
模型通过测试集进行测试, 即test_images与 test_labels两个数组。
图像是28x28 NumPy数组,像素值介于0到255之间。labels是一个整数数组,数值介于0到9之间。这对应了图像所代表的服装的类别:
class_names = [‘T-shirt/top’, ‘Trouser’, ‘Pullover’, ‘Dress’, ‘Coat’,
‘Sandal’, ‘Shirt’, ‘Sneaker’, ‘Bag’, ‘Ankle boot’]
print(train_images.shape)
print(test_images.shape)
(60000, 28, 28)
(10000, 28, 28)
2.数据预处理
在训练网络之前必须对数据进行预处理。 如果您检查训练集中的第一个图像,您将看到像素值落在0到255的范围内:
plt.figure()
plt.imshow(train_images[0])
plt.colorbar()
plt.grid(False)
plt.show()
在馈送到神经网络模型之前,我们将这些值缩放到0到1的范围。为此,我们将像素值值除以255。重要的是,对训练集和测试集要以相同的方式进行预处理:
train_images = train_images /