Numpy抛出TypeError:无法解包不可迭代的NoneType对象

时间:2019-10-02 07:27:51

标签: python numpy neural-network

我有直接从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,以便可以检查该值,并且在崩溃之前进行检查时,它显然会打印一个numpy数组,但是当到达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 :(得分:0)

追溯存在问题。事实证明,它实际上是进入函数内部,然后在函数内部的for循环上引发错误,但由于某种原因并未给出任何表明它正在崩溃的位置的信息。非常奇怪,也许是与不可迭代的TypeError有关的错误?不确定,尽管如此。