Возможный обходной путь - включить слои во входной конвейер. Это немного похоже на взлом, но я кратко его протестировал, и, похоже, он работает на TPU. Например, если вы используете tf.data.Dataset
API, вы можете создать объект слоя, а затем вызвать его внутри Dataset.map()
, чтобы применить расширение к конвейеру:
# dummy data
images = tf.random.uniform((10, 224, 224, 1))
labels = tf.zeros((10, 1))
ds = tf.data.Dataset.from_tensor_slices((images, labels))
ds = ds.batch(10)
# now incorporate the augmentation 'layer' into the pipeline
augmentor = tf.keras.layers.experimental.preprocessing.RandomRotation((-0.1, 0.1))
# augment the images, pass the labels through untouched
ds = ds.map(lambda x, y: (augmentor.call(x), y))
# assume we've compiled a model elsewhere
model.fit(ds)
Это не компилирует Уровни дополнения в модель, как изначально предполагалось, но это должно позволить вам увеличивать ваши обучающие данные, не требуя стороннего плагина. Я намерен использовать это как обходной путь, пока проблема не будет официально решена.