簡體   English   中英

Keras 適合:如果我的 steps_per_epoch 小於批次數怎么辦?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM