使用Keras,我希望训练的CCN要求我使用图像增强和转移学习。
对于磁盘上一组图像的增强,我使用ImageDataGenerator.flow_from_directory
。为了在预先训练的网络上生成增强的瓶颈功能,我打算使用预先训练好的网络predict_generator
方法和flow_from_directory
。这已经成功地生成了增强的瓶颈特征张量。但是,在我看来,没有办法获得相应的增强标签数组。
我真的很难过,因为Keras的设计师肯定会想到这一点,我只是遗漏了一些明显的东西。我相信在Keras中使用_generator
方法有足够的优点来保证这条路线的持续性。
提前致谢。
train_path = 'data/train'
train_gen = ImageDataGenerator(
rotation_range=360,
width_shift_range=0.10,
height_shift_range=0.10,
shear_range=0.52,
zoom_range=0.10,
channel_shift_range=0.10,
fill_mode='nearest',
horizontal_flip=True,
vertical_flip=True,
rescale=1./255,
)
train_flow = train_gen.flow_from_directory(
train_path,
target_size=(256, 256),
batch_size=32,
)
train_number = 20000
train_tensor_neck = base_model.predict_generator(train_flow, verbose=1,
steps=train_number // train_flow.batch_size + 1,)
# Now how to generate the labels?
train_labels = ...
答案 0 :(得分:0)
for xtrain, ytrain in train_flow:
train_tensor_neck = base_model.predict(xtrain)
train_labels = ytrain
理想情况下,您应该将模型堆叠到基础模型上而不关心它(尽管之前的选项可以节省培训时间):
base_model.trainable = False
for l in base_model.layers:
l.trainable = False
stackedModel = Model(base_model.inputs,top_model(base_model.outputs))
stackedModel.compile(.....)
stackedModel.fit_generator(train_flow,...)