Выкидывание типа TypeError: невозможно распаковать не повторяемый объект NoneType - PullRequest
0 голосов
/ 02 октября 2019

У меня есть код, скопированный напрямую из https://blog.varunajayasiri.com/numpy_lstm.html. Код не выполняется в строке 195 или:

for t in reversed(range(len(inputs))):
    y_val = y_s[t]
    # Backward pass
    dh_next, dC_next = \
        backward(target = targets[t], dh_next = dh_next,
                 dC_next = dC_next, C_prev = C_s[t-1],
                 z = z_s[t], f = f_s[t], i = i_s[t], C_bar = C_bar_s[t],
                 C = C_s[t], o = o_s[t], h = h_s[t], v = v_s[t],
                 y = y_val)

Я вручную установил y_val, чтобы я мог проверить значение, и при проверкепрямо перед сбоем он явно печатает массив с пустым фрагментом, но когда он достигает backward, он падает. Заменив y на что-нибудь еще, скажем в качестве примера:

backward(target = targets[t], dh_next = dh_next,
                     dC_next = dC_next, C_prev = C_s[t-1],
                     z = z_s[t], f = f_s[t], i = i_s[t], C_bar = C_bar_s[t],
                     C = C_s[t], o = o_s[t], h = h_s[t], v = v_s[t],
                     y = 4)

И код работает отлично (только сбой из-за ошибки утверждения внутри функции из-за несоответствия формы). Он также работает нормально, если я установил его в какой-нибудь случайный массив numpy:

backward(target = targets[t], dh_next = dh_next,
                     dC_next = dC_next, C_prev = C_s[t-1],
                     z = z_s[t], f = f_s[t], i = i_s[t], C_bar = C_bar_s[t],
                     C = C_s[t], o = o_s[t], h = h_s[t], v = v_s[t],
                     y = np.array[1,2,3,4,5,6,7,8,9])

Снова происходит сбой только из-за ошибки утверждения.

Кто-нибудь знает, что здесь происходит? Я очень смущен.

Вот полная ошибка:

data has 43 characters, 28 unique
Traceback (most recent call last):
  File "C:\Users\a\Desktop\stuff\b\lstm\example_lstm.py", line 287, in <module>
    forward_backward(inputs, targets, g_h_prev, g_C_prev)
  File "C:\Users\a\Desktop\stuff\b\lstm\example_lstm.py", line 195, in forward_backward
    y = y_val)
TypeError: cannot unpack non-iterable NoneType object

1 Ответ

0 голосов
/ 02 октября 2019

Это была проблема с трассировкой. Оказывается, что он на самом деле попадал внутрь функции, а затем выдавал ошибку в цикле for внутри функции, но по какой-то причине не давал никаких указаний на то, что именно там происходит сбой. Очень странно, может быть, это ошибка из-за не повторяющихся ошибок TypeError? Не уверен, тем не менее, это то, что происходило.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...