MXNet报TypeError: source_array must be array like object

再将一个包含多个NDArray的list列表直接使用nd.array将其转换为NDArray的时候报TypeError: source_array must be array like object具体代码如下:

from mxnet import nd
import numpy as np
a = nd.ones((3,3))
print(a)
b = nd.zeros((3,3))
print(b)
c = nd.array(np.array([a,b]))
print(c)

控制台输出内容如下:

[[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]
<NDArray 3x3 @cpu(0)>

[[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]
<NDArray 3x3 @cpu(0)>
Traceback (most recent call last):
  File "/home/zw/anaconda3/envs/arcFace/lib/python3.6/site-packages/mxnet/ndarray/ndarray.py", line 2501, in array
    source_array = np.array(source_array, dtype=dtype)
ValueError: setting an array element with a sequence.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/zw/workspace/dtn-antispoofing/DTN.py", line 202, in <module>
    c = nd.array([a,b])
  File "/home/zw/anaconda3/envs/arcFace/lib/python3.6/site-packages/mxnet/ndarray/utils.py", line 146, in array
    return _array(source_array, ctx=ctx, dtype=dtype)
  File "/home/zw/anaconda3/envs/arcFace/lib/python3.6/site-packages/mxnet/ndarray/ndarray.py", line 2503, in array
    raise TypeError('source_array must be array like object')
TypeError: source_array must be array like object

解决方法

通过NDArray的asnumpy()方法,先将NDArray转为numpy的array,然后再使用nd.array()将list转为NDArray

完整代码如下:

from mxnet import nd
import numpy as np
a = nd.ones((3,3))
print(a)
b = nd.zeros((3,3))
print(b)
c = nd.array([a.asnumpy(),b.asnumpy()])
print(c)

如果连接的两个NDArrayshape是一致的,还可以使用concat方法

d = []
d.extend(a)
d.extend(b)
c = nd.concat(*d,dim=0)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

修炼之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值