【问题标题】:ValueError: setting an array element with a sequence. in a Neural NetValueError:使用序列设置数组元素。在神经网络中
【发布时间】:2020-10-01 09:56:49
【问题描述】:

我正在学习一个关于神经网络的教程,但我试图按照我的方式去做,但在这条线上:

_Y[i0,i1]=ForwardPass(Neural_net, np.array([[x0,x1]]))

控制台说:

ValueError: 使用序列设置数组元素。

变量在这个块中定义:

    res = 50

    _x0=np.linspace(-1.5,1.5,res)
    _x1=np.linspace(-1.5,1.5,res)

    _Y = np.zeros((res,res))

    for i0,x0 in enumerate(_x0):
      for i1,x1 in enumerate(_x1):
        _Y[i0,i1]=ForwardPass(Neural_net, np.array([[x0,x1]]))

这是 ForwardPass 函数的代码:

def ForwardPass(neu_net, ent):

  outs=[ent]

  for l, layer in enumerate(neu_net):

    Sp=outs[-1]@neu_net[l].w + neu_net[l].b
    a=neu_net[l].act_f[0](Sp)

    outs.append(a)
  return outs

【问题讨论】:

  • 在运行上述行之前,您能否也向我们展示x0,x1 and _Y[i0,i1] 的值。
  • @LazyCoder 完成

标签: python arrays numpy neural-network artificial-intelligence


【解决方案1】:

如果您尝试在迭代中添加打印语句来检查 _Y[i0,i1] 的值:

res = 50

_x0=np.linspace(-1.5,1.5,res)
_x1=np.linspace(-1.5,1.5,res)

_Y = np.zeros((res,res))

for i0,x0 in enumerate(_x0):
    for i1,x1 in enumerate(_x1):
        print(_Y[i0,i1])
>>0.0
  0.0
  0.0
  ..

_Y[i0,i1] 是一个浮点值,而来自ForwardPass(Neural_net, np.array([[x0,x1]])) 的结果是一个列表。

因此,正如错误 ValueError: setting an array element with a sequence. 所说,因为您试图将列表(数组)分配给浮点值(数组元素)

【讨论】:

    猜你喜欢
    • 2017-11-18
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 2018-08-04
    • 2019-08-04
    相关资源
    最近更新 更多