4 回答

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊
為確保您有“至少steps_per_epoch * epochs批次”,steps_per_epoch請(qǐng)將
steps_per_epoch = len(X_train)//batch_size
validation_steps = len(X_test)//batch_size # if you have validation data
model.fit()您可以看到訓(xùn)練中斷時(shí)進(jìn)度條可以占用的最大批次數(shù):
5230/10000 [==============>...............] - ETA: 2:05:22 - loss: 0.0570
在這里,最大值為 5230 - 1
重要的是,請(qǐng)記住,默認(rèn)情況下,batch_size是 32 英寸model.fit()。
如果你使用 a tf.data.Dataset,你也可以添加repeat()方法,但要小心:它會(huì)無限循環(huán)(除非你指定一個(gè)數(shù)字)。

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超9個(gè)贊
在嘗試訓(xùn)練它們時(shí),我也有許多模型崩潰并出現(xiàn)相同的警告。如果使用 tf.keras.preprocessing.image_dataset_from_directory() 創(chuàng)建訓(xùn)練數(shù)據(jù)集并拆分 80/20。我創(chuàng)建了一個(gè)變量來嘗試并且不會(huì)用完圖像。將 ResNet50 與我自己的圖像一起使用.....
TRAIN_STEPS_PER_EPOCH = np.ceil((image_count*0.8/BATCH_SIZE)-1)
# to ensure that there are enough images for training bahch
VAL_STEPS_PER_EPOCH = np.ceil((image_count*0.2/BATCH_SIZE)-1)
但它仍然存在。BATCH_SIZE 設(shè)置為 32,所以我取 80% 的圖像數(shù)量并除以 32,然后取 1 以產(chǎn)生盈余……或者我是這么認(rèn)為的。
history = model.fit(
train_ds,
steps_per_epoch=TRAIN_STEPS_PER_EPOCH,
epochs=EPOCHS,
verbose = 1,
validation_data=val_ds,
validation_steps=VAL_STEPS_PER_EPOCH,
callbacks=tensorboard_callback)
處理一個(gè)成功的 Epoch 3 小時(shí)后的錯(cuò)誤是:
紀(jì)元 1/25 374/374 [==============================] - 8133s 22s/步 - 損失:7.0126 - 準(zhǔn)確度: 0.0028 - val_loss: 6.8585 - val_accuracy: 0.0000e+00 Epoch 2/25 1/374 [........ .] - ETA: 0s - loss: 6.0445 - accuracy: 0.0000e+00WARNING:tensorflow:Your input run out data; 中斷訓(xùn)練。確保您的數(shù)據(jù)集或生成器至少可以生成steps_per_epoch * epochs批次(在本例中為 9350.0 個(gè)批次)。在構(gòu)建數(shù)據(jù)集時(shí),您可能需要使用 repeat() 函數(shù)。
這可能會(huì)有所幫助....
> > print(train_ds) <BatchDataset shapes: ((None, 224, 224, 3), (None,)), types: (tf.float32, tf.int32)>
>
> print(val_ds) BatchDataset shapes: ((None, 224, 224, 3), (None,)),types: (tf.float32, tf.int32)>
>
> print(TRAIN_STEPS_PER_EPOCH)
> 374.0
>
> print(VAL_STEPS_PER_EPOCH)
> 93.0

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊
對(duì)我有用的解決方案是drop_remainder=True
在生成數(shù)據(jù)集時(shí)進(jìn)行設(shè)置。這會(huì)自動(dòng)處理剩余的任何額外數(shù)據(jù)。
例如:
dataset = tf.data.Dataset.from_tensor_slices((images, targets)) \ .batch(12, drop_remainder=True)

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊
image_dataset_from_directory
如果您使用、刪除 steps_per_epoch
和validation_steps
參數(shù)創(chuàng)建數(shù)據(jù)集model.fit
。
batch_size
原因是在傳入時(shí)已經(jīng)啟動(dòng)image_dataset_from_directory
了步驟,您可以嘗試使用 獲取步驟編號(hào)len
。
添加回答
舉報(bào)