У меня есть код непосредственно копия вставлен из 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)
И код работает отлично (только сбой из-за ошибки утверждения внутри функции из-за несоответствия формы). Он также работает нормально, если я установил случайный массив:
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 ответ
Это была проблема с трассировкой. Оказывается, что он на самом деле попадал внутрь функции, а затем выдавал ошибку в цикле for внутри функции, но по какой-то причине не давал никаких указаний на то, где это происходило. Очень странно, может быть, это ошибка из-за не повторяющихся ошибок TypeError? Не уверен, тем не менее, это то, что происходило.
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.