Python 如何正确实施Keras';s fit_生成器在多个数据集上?
我在实现Keras的fit_生成器函数时遇到问题。我关注了Keras文档和许多其他在线文档。但我似乎无法让这件事起作用 当我运行fit_生成器时,它没有抛出错误。我可以看出,由于我在任务管理器上的GPU使用率飙升至70%的处理率,后台正在运行一些东西。但是,没有任何文字/详细信息表明批次正在为我的卷积神经网络进行处理 这是我的模型 这是我的批处理生成器 我有六个hdf5文件,每个文件都包含40000个图像。它们已经格式化为Numpy数组。我每次生产20个批量Python 如何正确实施Keras';s fit_生成器在多个数据集上?,python,tensorflow,keras,batch-processing,conv-neural-network,Python,Tensorflow,Keras,Batch Processing,Conv Neural Network,我在实现Keras的fit_生成器函数时遇到问题。我关注了Keras文档和许多其他在线文档。但我似乎无法让这件事起作用 当我运行fit_生成器时,它没有抛出错误。我可以看出,由于我在任务管理器上的GPU使用率飙升至70%的处理率,后台正在运行一些东西。但是,没有任何文字/详细信息表明批次正在为我的卷积神经网络进行处理 这是我的模型 这是我的批处理生成器 我有六个hdf5文件,每个文件都包含40000个图像。它们已经格式化为Numpy数组。我每次生产20个批量 def train_generato
def train_generator():
counter = 1
batch_size = 20
while True:
# Create arrays to contain x_train and y_train. There are six of these files in total, so 40000*6 = 240,000 items in the entire training set.
# 240,000 images for each epoch
h5f = h5py.File('x_train' + str(counter) + 'catID.h5','r')
pic_arr = h5f['dataset'][0:40000]
h5f = h5py.File('y_train' + str(counter) + 'catID.h5','r')
cat_arr = h5f['dataset'][0:40000]
h5f.close()
# Since training size for first dataset is 40,000 and batch_size is 20, loop 2000 times because 40000/20 = 2000
for i in range(1,2001):
if (i == 1):
x_train = pic_arr[0:batch_size]
y_train = cat_arr[0:batch_size]
index = batch_size
yield (x_train, y_train)
else:
x_train = pic_arr[index:index + batch_size]
y_train = cat_arr[index:index + batch_size]
index += batch_size
yield (x_train, y_train)
del pic_arr
del cat_arr
counter += 1
适合我的模型
当我的模型与我的生成器相匹配时,我知道我的GPU正在处理数据;我有一台NVIDIA GTX 1070。但在运行下面的代码时,不会显示详细/文本。我也试过不用GPU跑步,但还是没有运气。我有什么地方做错了吗
from keras.callbacks import ModelCheckpoint
import tensorflow as tf
# This is used to store the best weights for our trained model.
checkpointer = ModelCheckpoint(filepath='weights_bestcatID.hdf5',
verbose=1, save_best_only=True)
# steps_per_epoch=12000 because --> 240,000 (total samples) / 20 (batch size) = 12000
with tf.device('/device:GPU:0'):
model.fit_generator(train_generator(), steps_per_epoch=12000, nb_epoch=4, verbose = 1, callbacks=[checkpointer])
别客气。我试着再次运行同样的代码,它成功了。。。如果有人需要参考如何实现Keras的fit_generator,上面的方法是有效的。只需删除收益率语句中的括号。当计数器>文件数时会发生什么情况?
from keras.callbacks import ModelCheckpoint
import tensorflow as tf
# This is used to store the best weights for our trained model.
checkpointer = ModelCheckpoint(filepath='weights_bestcatID.hdf5',
verbose=1, save_best_only=True)
# steps_per_epoch=12000 because --> 240,000 (total samples) / 20 (batch size) = 12000
with tf.device('/device:GPU:0'):
model.fit_generator(train_generator(), steps_per_epoch=12000, nb_epoch=4, verbose = 1, callbacks=[checkpointer])