簡體   English   中英

TensorFlow keras 模型 fit() 參數 steps_per_epoch 和訓練集上的 epochs 行為

[英]TensorFlow keras model fit() parameters steps_per_epoch and epochs behavior on train set

我正在使用一個 tf.data 數據集,其中包含我的訓練數據,其中包含(比如說)100k 個圖像。 我也在使用包含我的驗證集的 tf.data 數據集。 由於所有 100k 圖像的 epoch 需要很長時間(在我的情況下大約一小時)才能獲得有關驗證集性能的任何反饋,因此我將 tf.keras.Model fit()steps_per_epoch參數設置為10000 使用 1 的批量大小會導致在達到 100k 圖像時有 10 個驗證分數。 為了完成整個訓練數據集的 10 萬張圖像的一個時期,我將epochs參數設置為10

不過,我不知道,如果使用steps_per_epochepochs這樣有什么其他后果。 使用這些參數以獲得更頻繁的性能反饋是否正確? 還有一個更具體的問題,它是使用所有 100k 圖像還是在每個“時期”使用我的訓練集的前 10k 圖像? 我已經深入研究了TensorFlow 文檔並閱讀了幾個不同的堆棧溢出問題,但我找不到任何結論來回答我自己的問題。 希望你能幫上忙!

我使用的 Tensorflow 版本是 2.2.0。

使用這些參數以獲得更頻繁的性能反饋是否正確?

是的,使用這些參數是正確的。 這是我用來擬合模型的代碼。

model.fit(
train_data,
steps_per_epoch = train_samples//batch_size,
epochs = epochs,
validation_data = test_data,
verbose = 1,
validation_steps = test_samples//batch_size)

它是使用所有 100k 圖像還是在每個“時期”使用我的訓練集的前 10k 圖像?

它使用訓練數據中的所有圖像。

為了更好地理解Epoch是學習算法在整個訓練數據集上工作的次數。

其中, steps_per_epoch是訓練數據集中的樣本總數除以批量大小。

例如,如果您有 100000 個訓練樣本並使用 100 的批量大小,則一個 epoch 將相當於 1000 個 steps_per_epoch。

注意:我們通常觀察批量大小為 2 的冪,這是因為優化矩陣運算庫的有效工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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