簡體   English   中英

keras fit_generator 時代的問題

[英]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 LayerMasking Layer以及在GPU上進行訓練時,似乎會出現此問題。

下面提到的可能是此問題的解決方法:

  1. 如果你可以在速度上妥協,你可以在CPU上訓練你的Model而不是GPU 它可以正常工作,沒有任何錯誤。

  2. 根據此評論,請檢查您的Input Sequences是否包含所有零,因為Masking Layer可能會屏蔽所有Inputs

  3. 如果可能,您可以禁用Eager Execution 根據此評論,它可以正常工作。

  4. 您可以嘗試使用此鏈接中提到的替代方法,而不是使用遮罩層

    一個。 將參數mask_zero = True添加到Embedding Layer 或者

    灣。 調用支持此參數的圖層時手動傳遞掩碼參數

  5. 如果可能的話,最后的解決方案是刪除Masking Layer

如果上述解決方法都不能解決您的問題,Google Tensorflow 團隊正在努力解決此錯誤。 我們可能要等到這個問題解決了。

希望這些信息有所幫助。 快樂學習!

暫無
暫無

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

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