[英]Issue with keras fit_generator epoch
我正在創建一個 LSTM Model 用於使用 Keras 生成文本。 作為數據集(大約 25 部小說,大約 140 萬字)我使用的數據集不能一次處理(一個 Memory 問題,將我的輸出轉換為_Categorical())我創建了一個自定義生成器 function 來讀取數據。
# Data generator for fit and evaluate
def generator(batch_size):
start = 0
end = batch_size
while True:
x = sequences[start:end,:-1]
#print(x)
y = sequences[start:end,-1]
y = to_categorical(y, num_classes=vocab_size)
#print(y)
yield x, y
if batch_size == len(lines):
break;
else:
start += batch_size
end += batch_size
當我執行 model.fit() 方法時,在 1 個 epoch 完成訓練后會引發以下錯誤。
UnknownError: [_Derived_] CUDNN_STATUS_BAD_PARAM
in tensorflow/stream_executor/cuda/cuda_dnn.cc(1459): 'cudnnSetTensorNdDescriptor( tensor_desc.get(), data_type, sizeof(dims) / sizeof(dims[0]), dims, strides)'
[[{{node CudnnRNN}}]]
[[sequential/lstm/StatefulPartitionedCall]] [Op:__inference_train_function_25138]
Function call stack:
train_function -> train_function -> train_function
有誰知道如何解決這個問題? 謝謝
從互聯網上的許多來源來看,在使用LSTM Layer
和Masking Layer
以及在GPU
上進行訓練時,似乎會出現此問題。
下面提到的可能是此問題的解決方法:
如果你可以在速度上妥協,你可以在CPU
上訓練你的Model
而不是GPU
。 它可以正常工作,沒有任何錯誤。
根據此評論,請檢查您的Input Sequences
是否包含所有零,因為Masking Layer
可能會屏蔽所有Inputs
如果可能,您可以禁用Eager Execution
。 根據此評論,它可以正常工作。
您可以嘗試使用此鏈接中提到的替代方法,而不是使用遮罩層
一個。 將參數mask_zero = True
添加到Embedding Layer
。 或者
灣。 調用支持此參數的圖層時手動傳遞掩碼參數
如果可能的話,最后的解決方案是刪除Masking Layer
。
如果上述解決方法都不能解決您的問題,Google Tensorflow 團隊正在努力解決此錯誤。 我們可能要等到這個問題解決了。
希望這些信息有所幫助。 快樂學習!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.