如何使用TensorFlow将增强数据拟合到模型中?
增强模型可以使用‘compile’方法进行编译,该方法也接受验证数据和时期数(训练步骤数)作为参数。
阅读更多: 什么是TensorFlow以及Keras如何与TensorFlow一起创建神经网络?
我们将使用Keras Sequential API,它有助于构建一个顺序模型,用于处理简单的层堆栈,其中每一层只有一个输入张量和一个输出张量。
包含至少一层卷积层的神经网络称为卷积神经网络。我们可以使用卷积神经网络来构建学习模型。
图像分类器使用keras.Sequential模型创建,数据使用preprocessing.image_dataset_from_directory加载。数据可以高效地从磁盘加载。会识别过拟合并应用技术来减轻它。这些技术包括数据增强和dropout。共有3700张花卉图像。此数据集包含5个子目录,每个类有一个子目录。
分别是雏菊、蒲公英、玫瑰、向日葵和郁金香。
我们使用Google Colaboratory运行以下代码。Google Colab或Colaboratory帮助在浏览器上运行Python代码,无需任何配置,并可免费访问GPU(图形处理单元)。Colaboratory构建在Jupyter Notebook之上。
当训练样本数量较少时,模型会从训练样本中的噪声或不需要的细节中学习。这会对模型在新样本上的性能产生负面影响。
由于过拟合,模型将无法在新数据集上很好地泛化。有很多方法可以避免过拟合。我们可以使用dropout技术来克服过拟合。通过在网络中引入dropout可以减少过拟合。这被认为是一种正则化形式。这有助于模型接触数据的更多方面,从而帮助模型更好地泛化。以下是一个示例
示例
print("Train the model to fit the given data") epochs = 15 history = model.fit( train_ds, validation_data=val_ds, epochs=epochs )
代码来源 −https://tensorflowcn.cn/tutorials/images/classification
输出
Train the model to fit the given data Epoch 1/15 92/92 [==============================] - 104s 1s/step - loss: 1.5371 - accuracy: 0.3103 - val_loss: 1.1487 - val_accuracy: 0.5313 Epoch 2/15 92/92 [==============================] - 102s 1s/step - loss: 1.1414 - accuracy: 0.5087 - val_loss: 1.3204 - val_accuracy: 0.5286 Epoch 3/15 92/92 [==============================] - 102s 1s/step - loss: 1.0260 - accuracy: 0.5991 - val_loss: 0.9823 - val_accuracy: 0.6281 Epoch 4/15 92/92 [==============================] - 103s 1s/step - loss: 0.9431 - accuracy: 0.6466 - val_loss: 0.9937 - val_accuracy: 0.6417 Epoch 5/15 92/92 [==============================] - 104s 1s/step - loss: 0.8294 - accuracy: 0.6706 - val_loss: 0.8365 - val_accuracy: 0.6866 Epoch 6/15 92/92 [==============================] - 103s 1s/step - loss: 0.7584 - accuracy: 0.7101 - val_loss: 0.8471 - val_accuracy: 0.6717 Epoch 7/15 92/92 [==============================] - 102s 1s/step - loss: 0.7323 - accuracy: 0.7225 - val_loss: 0.7949 - val_accuracy: 0.6853 Epoch 8/15 92/92 [==============================] - 104s 1s/step - loss: 0.7197 - accuracy: 0.7168 - val_loss: 0.8422 - val_accuracy: 0.6839 Epoch 9/15 92/92 [==============================] - 103s 1s/step - loss: 0.7209 - accuracy: 0.7229 - val_loss: 0.7502 - val_accuracy: 0.7193 Epoch 10/15 92/92 [==============================] - 104s 1s/step - loss: 0.6334 - accuracy: 0.7590 - val_loss: 0.8248 - val_accuracy: 0.7016 Epoch 11/15 92/92 [==============================] - 104s 1s/step - loss: 0.6052 - accuracy: 0.7737 - val_loss: 0.7400 - val_accuracy: 0.7153 Epoch 12/15 92/92 [==============================] - 104s 1s/step - loss: 0.5713 - accuracy: 0.7831 - val_loss: 0.7424 - val_accuracy: 0.7098 Epoch 13/15 92/92 [==============================] - 105s 1s/step - loss: 0.5627 - accuracy: 0.7875 - val_loss: 0.7028 - val_accuracy: 0.7275 Epoch 14/15 92/92 [==============================] - 103s 1s/step - loss: 0.5254 - accuracy: 0.8029 - val_loss: 0.6900 - val_accuracy: 0.7371 Epoch 15/15 92/92 [==============================] - 103s 1s/step - loss: 0.5187 - accuracy: 0.7984 - val_loss: 0.7839 - val_accuracy: 0.7153
解释
- 模型经过训练以拟合训练数据。
- 训练进行了15个步骤/迭代/时期。
- 这是借助‘fit’方法完成的。