使用mxnet时遇到的问题Operator _zeros cannot be run; requires at least one of FCompute<xpu>......

在使用MXNet进行深度学习时遇到了Operator _zeros错误,问题源于代码中的context设置为mx.gpu(0)。通过将context更改为mx.cpu(0),发现可能是因为编译的MXnet不支持GPU。为解决此问题,需要重新编译MXnet,开启CUDA支持,并正确配置CUDA的安装路径。完成编译后,GPU版本的MXnet能提供比CPU版本更高的运算速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在跑DFF的代码时,按照指示一步步操作,最后出现Operator _zeros cannot be run; requires at least one of FCompute<xpu>, NDArrayFunction, FCreateOperator be registered。一步步查找问题时,最后发现问题出在下面的语句中

arg_arr = nd.zeros(arg_shape, context,dtype=arg_type)
其中,arg_shape是一个四元tuple,是要新建的arg_arr的维度信息;

context=mx.gpu(0);

arg_type是numpy.float32.

这三个参数共同定义类arg_arr的维数、元素类型,以及要运行的单元(在cpu上还是在gpu上)。在程序运行到这一步的时候,context的值是mx.gpu(0),意味着该矩阵是存储运行在gpu上的。然而该句执行后就从该代码段退出。一层一层退出后,即出现了Operator _zeros cannot be run; requires at least one of FCompute<xpu>, NDArrayFunction, FCreateOperator be registered的问题。

将context的值由mx.gpu(0)改为mx.cpu(0)后,包含该代码的代码段可以执行。因此,猜测是因为编译的mxnet不支持gpu。

重新编译安装mxnet,使得其支持gpu:

MXnet需要打开一个编译和链接选项来支持CUDA。在mxnet/目录里找到mxnet/make/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值