使用Keras使用相应的标签生成瓶颈功能扩充

时间:2018-02-05 14:18:22

标签: python keras labels

使用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 = ...

1 个答案:

答案 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,...)