我在几个 Tensorflow/Keras 教程中看到数据增强功能被添加为 keras 层。当我将我的 Keras Python 模型(用于生产目的)转换为 TensorflowJS 时,我遇到了一个问题,例如 RandomFlip 层在 TensorflowJS 中不可用。所以我必须使用 ImageDataGenerator。
我不明白我为什么要把数据增强层放在模型中,我的意思是当我想在生产中使用我的模型时,我仍然会将它们放在我的模型中,这对我来说没有意义。
我在几个 Tensorflow/Keras 教程中看到数据增强功能被添加为 keras 层。当我将我的 Keras Python 模型(用于生产目的)转换为 TensorflowJS 时,我遇到了一个问题,例如 RandomFlip 层在 TensorflowJS 中不可用。所以我必须使用 ImageDataGenerator。
我不明白我为什么要把数据增强层放在模型中,我的意思是当我想在生产中使用我的模型时,我仍然会将它们放在我的模型中,这对我来说没有意义。
你在推理时不需要那个。这是出于培训目的。
您可以在导出到 JavsScript 时跳过这些层。这些层没有权重。
在这个包含这些图层的示例 [ Link ] 中,我删除了这些图层并且效果很好。
# Added this code to remove the first 4 Aug layers
input = model.input
model_export = input
for layer in model.layers[4:]:
model_export = layer(model_export)
model_export = keras.Model(input, model_export)
预测输出- 此图像最有可能属于具有 100.00% 置信度的向日葵。
数据增强基本上是一种通过应用随机(但现实)变换(例如图像旋转)来增加训练集多样性的技术。在更多数据上训练深度学习神经网络模型可以产生更熟练的模型,而增强技术可以创建图像的变体,从而提高拟合模型将所学知识推广到新图像的能力。因此,您可以降低过拟合率或采取一些预防措施。
Keras 深度学习神经网络库提供了通过 ImageDataGenerator 类使用图像数据增强来拟合模型的能力。通过使用这个类,您可以使用它的许多功能来修改数据集。