亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

tensorflow:您的輸入沒有數據

tensorflow:您的輸入沒有數據

搖曳的薔薇 2022-07-05 19:31:08
我正在研究 seq2seq keras/tensorflow 2.0 模型。每次用戶輸入內容時,我的模型都會完美地打印響應。然而,在每個響應的最后一行我得到這個:你:警告:tensorflow:你的輸入用完了數據;中斷訓練。確保您的數據集或生成器至少可以生成steps_per_epoch * epochs批次(在本例中為 2 個批次)。在構建數據集時,您可能需要使用 repeat() 函數?!澳悖骸笔俏业淖詈笠粋€輸出,在用戶應該輸入新內容之前。模型工作得很好,但我想沒有錯誤是好的,但我不太明白這個錯誤。它說“中斷訓練”,但是我沒有訓練任何東西,這個程序加載了一個已經訓練過的模型。我想這就是為什么錯誤沒有停止程序的原因?如果有幫助,我的模型如下所示:intent_model = keras.Sequential([    keras.layers.Dense(8, input_shape=[len(train_x[0])]),  # input layer    keras.layers.Dense(8),  # hidden layer    keras.layers.Dense(len(train_y[0]), activation="softmax"),  # output layer])intent_model.compile(optimizer="adam", loss="categorical_crossentropy", metrics=["accuracy"])intent_model.fit(train_x, train_y, epochs=epochs)test_loss, test_acc = intent_model.evaluate(train_x, train_y)print("Tested Acc:", test_acc)intent_model.save("models/intent_model.h5")
查看完整描述

4 回答

?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

為確保您有“至少steps_per_epoch * epochs批次”,steps_per_epoch請將


steps_per_epoch = len(X_train)//batch_size


validation_steps = len(X_test)//batch_size # if you have validation data 

model.fit()您可以看到訓練中斷時進度條可以占用的最大批次數:


5230/10000 [==============>...............] - ETA: 2:05:22 - loss: 0.0570

在這里,最大值為 5230 - 1


重要的是,請記住,默認情況下,batch_size是 32 英寸model.fit()。


如果你使用 a tf.data.Dataset,你也可以添加repeat()方法,但要小心:它會無限循環(除非你指定一個數字)。


查看完整回答
反對 回復 2022-07-05
?
天涯盡頭無女友

TA貢獻1831條經驗 獲得超9個贊

在嘗試訓練它們時,我也有許多模型崩潰并出現相同的警告。如果使用 tf.keras.preprocessing.image_dataset_from_directory() 創建訓練數據集并拆分 80/20。我創建了一個變量來嘗試并且不會用完圖像。將 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 設置為 32,所以我取 80% 的圖像數量并除以 32,然后取 1 以產生盈余……或者我是這么認為的。


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)

處理一個成功的 Epoch 3 小時后的錯誤是:


紀元 1/25 374/374 [==============================] - 8133s 22s/步 - 損失:7.0126 - 準確度: 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; 中斷訓練。確保您的數據集或生成器至少可以生成steps_per_epoch * epochs批次(在本例中為 9350.0 個批次)。在構建數據集時,您可能需要使用 repeat() 函數。


這可能會有所幫助....


> > 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


查看完整回答
反對 回復 2022-07-05
?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

對我有用的解決方案是drop_remainder=True在生成數據集時進行設置。這會自動處理剩余的任何額外數據。

例如:

dataset = tf.data.Dataset.from_tensor_slices((images, targets)) \
        .batch(12, drop_remainder=True)


查看完整回答
反對 回復 2022-07-05
?
斯蒂芬大帝

TA貢獻1827條經驗 獲得超8個贊

image_dataset_from_directory如果您使用、刪除 steps_per_epoch validation_steps參數創建數據集model.fit

batch_size原因是在傳入時已經啟動image_dataset_from_directory了步驟,您可以嘗試使用 獲取步驟編號len


查看完整回答
反對 回復 2022-07-05
  • 4 回答
  • 0 關注
  • 139 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號