我是一个有点困惑如何在keras
使用fit_generator
fit_generator。如何在keras
例如让说:
- 我们有10000个数据点 我们要为10个时代
- 与512
批量运行使用fit
我们只是
x, y = load_data()
model.fit(x=x, y=y, batch_size=512, epochs=10)
其中load_data
加载所有数据。
现在该怎么做同样的fit_generator
。
它,我不清楚它是如何使用fit_generator
时处理。如果我有以下发生器:
def data_generator():
for x, y in load_data_per_line():
yield x, y
在每次它yields
一个数据点上方的发电机。和:
def data_generator_2():
x_output = []
y_output = []
i = 0
for x, y in load_data_per_line():
x_output[i] = x
y_output[i] = y
i = i + 1
if i == batch_size:
yield x_output, y_output
i = 0
x_output = []
y_output = []
在上述发电机每次它yields
批量大小的数据点(512在这种情况下)。
为了达到相同fit
但使用fit_generator
:
model.fit_generator(data_generator(), steps_per_epoch=10000/512, epochs=10)
或
model.fit_generator(data_generator_2(), steps_per_epoch=10000/512, epochs=10)
或者两者都是错误的(fit_generator
和data_generator
S)?如果其中任何一个是正确的,那么是否保证所有数据点都将被处理并且被顺序处理?
任何了解是有用
只是一个好奇心,所以在这种情况下,最后一批将不会有512的大小,这是好的吗? – titipata
这很好,只要你不让你的发生器尝试读取超过允许的值。 –
感谢您的详细解答。因为拟合生成器的目的是训练一个有大量数据的模型,为什么它假设我必须知道数据点的数量?如果因为任何原因我不知道数据点的确切数目会发生什么?如何设置这种情况下的步骤? –