Adr*_*ian 3 numpy python-3.x scikit-learn deep-learning keras
我有 8000 张图像,我正在加载sklearn.datasets.load_files并从keras通过 resnet获取瓶颈功能。然而,这项任务在 GPU 上需要花费数小时,所以我想知道是否有办法告诉load_files
加载 20% 之类的数据百分比。
我这样做是为了训练我自己的顶层(最后一个密集层)并将其附加到 resnet。
def load_dataset(path):
data = load_files(path)
files = np.array(data['filenames'])
targets = np_utils.to_categorical(np.array(data['target']), 100)
return files, targets
train_files, train_targets = load_dataset('images/train')
Run Code Online (Sandbox Code Playgroud)
这听起来更适合 KerasImageDataGenerator
类并使用该ImageDataGenerator.flow_from_directory
方法。您不必对它使用数据增强(这会进一步减慢速度),但您可以选择从目录中提取的批量大小,而不是将它们全部加载。
复制自https://keras.io/preprocessing/image/并稍加注释。
train_datagen = ImageDataGenerator( # <- customize your transformations
rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True)
test_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(
'data/train',
target_size=(150, 150),
batch_size=32, # <- control how many images are loaded each batch
class_mode='binary')
validation_generator = test_datagen.flow_from_directory(
'data/validation',
target_size=(150, 150),
batch_size=32,
class_mode='binary')
model.fit_generator(
train_generator,
steps_per_epoch=2000, # <- reduce here to lower the overall images used
epochs=50,
validation_data=validation_generator,
validation_steps=800)
Run Code Online (Sandbox Code Playgroud)
编辑
根据您在下面的问题... steps_per_epoch 确定每个时期加载多少批次。
例如:
将为您提供该时代总共 1,600 张图像。这恰好是您 8,000 张图像的 20%。请注意,如果您遇到批处理大小为 32 的内存问题,您可能需要减少它并增加您的 step_per_epoch。需要一些修补才能使它正确。
归档时间: |
|
查看次数: |
2416 次 |
最近记录: |