在本教程中,我们将使用tf.keras构建并训练一个简单的神经网络,使用序列模型从Fashion_mnist数据集中对服装图像进行分类,例如运动鞋和衬衫。您将学习如何定义和训练一个模型,该模型即使在没有重大优化的情况下,也可以在几行代码中以90%左右的准确率对图像进行分类。完整的代码在本教程的末尾给出。
以下是我们将遵循的6个步骤:
我希望你准备好了。让我们开始吧,不要再费劲了。
步骤1:导入依赖项
import tensorflow as tf
步骤2:导入数据集
让我们导入将在本教程中使用的Fashion_mnist数据集。FORMING_MNIST数据集由70,000个灰度图像组成,分为十个类别,每个类别的尺寸为28×28像素。
fashion_mnist = tf.keras.datasets.fashion_mnist.load_data()
当标签在MNIST数据集中等于5时,它表示图像反映的是手写数字5。然而,对于FORMAND_MNIST,我们需要类名列表才能知道我们正在处理的是什么。
class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat', 'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']
步骤3:对数据进行预处理
图像数据中的每个像素具有介于0和255之间的整数值。这些值必须缩放到范围[0,1],模型才能有效执行。为简单起见,我们将通过将像素值除以255.0(这也会将它们转换为浮点数)来将像素值缩小到0-1范围
train_images = train_images/255.0
步骤4:构建模型
在编译模型之前,必须配置神经网络层。
让我们使用顺序模型体系结构配置神经网络层。
model = tf.keras.Sequential([
现在,我们使用ADAM优化器和SparseCategoricalCrossenropy()损失函数编译模型。
model.compile(optimizer='adam', loss = tf.keras.losses.SparseCategoricalCrossentropy(), metrics=['accuracy'])
步骤5:训练和评估模型
模型现已准备就绪,可以进行培训。为此,我们只需要使用它的fit()方法。VALIDATION_SPLIT参数与输入特征(TRAIN_IMAGE)、目标标签(TRAIN_LABEs)和要训练的历元数一起传递。在这种情况下,将使用10%的训练数据作为验证数据。
model.fit(train_images, train_labels, validation_split = 0.1, epochs=10, verbose = 2)
在每个时期结束时,Kera将计算验证集上的损失和额外指标,这对于确定模型的执行情况很有用。如果训练集的性能明显好于验证集的性能,则您的模型可能过度适合训练集。
一旦您对模型的验证准确性感到满意,就应该在测试集上评估模型以估计泛化误差,然后再将其部署到生产环境中。您可以使用EVALUATE()方法轻松地实现这一点。
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose = 2)
第六步:做预测
然后可以使用模型的recast()方法对新实例进行预测。我们将只使用测试集中的前三个实例(TEST_IMAGES),因为我们没有任何新实例。
x_new = test_images[:3]
如您所见,对于每个实例,该模型为每个类估计一个概率,范围从0到9。例如,对于第一幅图像,该模型预测了99%的类别9(踝靴)和1%的类别7(运动鞋)。
如果您只关心概率最高的类,那么您可以改用np.argmax(model.recast(X_New),axis=-1)。
y_pred = np.argmax(model.predict(x_new), axis=-1)
在这里,分类器正确地对所有三幅图像进行了分类。
plt.figure(figsize=(10,10))
结论
我们已经建立并训练了一个简单的神经工作模型,用于从时尚数据集中对图像服装进行分类。本教程的目标是用简单的代码概述TensorFlow项目。
原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/07/18/%e7%94%a8tensorflow%e5%88%866%e6%ad%a5%e6%9e%84%e5%bb%ba%e7%a5%9e%e7%bb%8f%e7%bd%91%e7%bb%9c%ef%bc%9a%e5%88%9d%e5%ad%a6%e8%80%85/