我将数据扩充添加到tensorflow 模型中,如下所示:
data_augmentation = keras.Sequential([
layers.experimental.preprocessing.RandomRotation(factor=0.4, fill_mode="wrap"),
layers.experimental.preprocessing.RandomTranslation(height_factor=0.2, width_factor=0.2, fill_mode="wrap"),
layers.experimental.preprocessing.RandomFlip("horizontal"),
layers.experimental.preprocessing.RandomContrast(factor=0.2),
layers.experimental.preprocessing.RandomHeight(factor=0.2),
layers.experimental.preprocessing.RandomWidth(factor=0.2)
])
input_shape = (299, 299, 3)
inceptionV3_base = tf.keras.applications.InceptionV3(
input_shape=input_shape,
include_top=False,
weights='imagenet'
)
tf_model = tf.keras.Sequential([
tf.keras.layers.InputLayer(input_shape=input_shape),
data_augmentation,
inceptionV3_base,
tf.keras.layers.GlobalAveragePooling2D(),
tf.keras.layers.Dense(1024, activation='relu'),
tf.keras.layers.Dense(len(classes), activation='softmax')
])
将data_augmentation
图层添加到model
会使训练速度降低13倍。我是否正确使用了keras预处理图层?
3条答案
按热度按时间cclgggtu1#
我有同样的问题-是失踪的
ptxas
(nvidia-cuda-toolkit
包为我)。lf5gs5x22#
有两种添加数据扩充的方法:1-在模型内部,就像您所做的那样。2-在模型外部,在训练之前,使用tf.data.Dataset.map()
也许尝试option 2可以让您的模型训练更快。试试吧!更多详情请点击此处:https://keras.io/guides/preprocessing_layers/
还有很多其他的方法可以优化训练,比如把数据输入模型的方法。你是否使用了tf.data.Dataset方法,比如cache()和prefetch()。更多的细节可以在这里找到:https://www.tensorflow.org/tutorials/load_data/images#configure_the_dataset_for_performance
wgmfuz8q3#
https://stackoverflow.com/a/73751638/17739476找到了这个答案,它也解决了我的速度慢的问题,结果是tensorflow 2.8.3运行预处理层的速度快得多,不知道为什么