[英]Keras fit: What if my steps_per_epoch is fewer than the number of batches?
我在網上讀到, steps_per_epoch
被定義為數據集大小/批量大小。 所以基本上,它是每個時期要看到/學習的批次數。
在下面的代碼中,我在使用時間序列生成器處理后有 8 個批次。 所以如果我使用
steps_per_epoch=1
,這是否意味着每個時期只需要看到/學習 1 個批次?
# univariate one step problem with mlp
from numpy import array
from keras.models import Sequential
from keras.layers import Dense
from pip.preprocessing.sequence import TimeseriesGenerator
# define dataset
series = array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) # 10 samples before processing by the Generator
# define generator
timestep = 2
generator = TimeseriesGenerator(series, series, length=timestep, batch_size=1)
# After processing, 8 batches with 1 sample each
# define model
model = Sequential()
model.add(Dense(100, activation='relu', input_dim=timestep))
model.add(Dense(1))
model.compile(optimizer='adam', loss='mse')
# fit model
model.fit_generator(generator, steps_per_epoch=1, epochs=200, verbose=0)
是的,您的 model 將始終看到相同的批次,這是因為生成器在每個時期后再次被調用,只有當生成器無法提供比steps_per_epoch
中指定的批次更多的批次時,您才會遇到問題。
在這種情況下,您將收到生成器已用完數據的錯誤。
要記住的要點是,使用生成器不會遍歷所有數據庫,這是因為每次啟動 epoch 時都會重新初始化生成器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.