簡體   English   中英

CNTK運行時錯誤

[英]CNTK Run Time Error

我正在cntk中嘗試一個簡單的lstm網絡,但出現以下錯誤:

RuntimeError                              Traceback (most recent call last)
<ipython-input-58-d0a0e4f580aa> in <module>()
      6         trainer.train_minibatch({x: x1, l: y1})
      7     if epoch % (EPOCHS / 10) == 0:
----> 8         training_loss = trainer.previous_minibatch_loss_average
      9         loss_summary.append(training_loss)
     10         print("epoch: {}, loss: {:.5f}".format(epoch, training_loss))

C:\Program Files\Anaconda3\envs\python2\lib\site-packages\cntk\train\trainer.pyc in previous_minibatch_loss_average(self)
    285         The average training loss per sample for the last minibatch trained
    286         '''
--> 287         return super(Trainer, self).previous_minibatch_loss_average()
    288 
    289     @property

C:\Program Files\Anaconda3\envs\python2\lib\site-packages\cntk\cntk_py.pyc in previous_minibatch_loss_average(self)
   2516 
   2517     def previous_minibatch_loss_average(self):
-> 2518         return _cntk_py.Trainer_previous_minibatch_loss_average(self)
   2519 
   2520     def previous_minibatch_evaluation_average(self):

RuntimeError: There was no preceeding call to TrainMinibatch or the minibatch was empty.

[CALL STACK]
    > CNTK::Trainer::  PreviousMinibatchLossAverage
    - 00007FFFA932A5F6 (SymFromAddr() error: Attempt to access invalid address.)
    - PyCFunction_Call
    - PyEval_GetGlobals
    - PyEval_EvalFrameEx
    - PyEval_GetFuncDesc
    - PyEval_GetGlobals
    - PyEval_EvalFrameEx
    - PyEval_EvalCodeEx
    - PyFunction_SetClosure
    - PyObject_Call (x2)
    - PyObject_CallFunction
    - PyObject_GenericGetAttrWithDict
    - PyType_Lookup
    - PyEval_EvalFrameEx

相關代碼為:

# train
loss_summary = []
start = time.time()
for epoch in range(0, EPOCHS):
    for x1, y1 in next_batch(x_train, y_train):
        trainer.train_minibatch({x: x1, l: y1})
    if epoch % (EPOCHS / 10) == 0:
        training_loss = trainer.previous_minibatch_loss_average
        loss_summary.append(training_loss)
        print("epoch: {}, loss: {:.5f}".format(epoch, training_loss))

現在,我在這里呆了幾個小時,無法理解正在發生的事情。 我正在https://notebooks.azure.com/cntk/libraries/tutorials/html/CNTK_106A_LSTM_Timeseries_with_Simulated_Data.ipynb上學習教程,但搜索Google也無濟於事。

謝謝你的幫助。

只是一個想法:可能永遠不會執行for(下一個minibatch)循環嗎?

我會嘗試使用pdb對其進行調試。 只需import pdb jupyter單元格的頂部,然后在for x1, y1 ..循環之前添加pdb.set_trace() 運行單元格。 您可以使用步驟進入方法,或使用下一個步驟前進。 這也許可以幫助您分析跟蹤,並且可以在pdb中使用打印來證明變量。

暫無
暫無

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

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