我是一個有點困惑如何在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
這很好,只要你不讓你的發生器嘗試讀取超過允許的值。 –
感謝您的詳細解答。因爲擬合生成器的目的是訓練一個有大量數據的模型,爲什麼它假設我必須知道數據點的數量?如果因爲任何原因我不知道數據點的確切數目會發生什麼?如何設置這種情況下的步驟? –