gluon.utils.split_and_load进行多gpu训练碰到的小问题MXNetError: Check failed: (*begin < *end): Invalid begin, en

import numpy as np
from mxnet import gluon,npx,nd
data = np.arange(15).reshape(3, 5)
dataloader = gluon.data.DataLoader(data, batch_size=2, shuffle=False,
                                        last_batch='keep')
devices = [npx.gpu(0), npx.gpu(1)]
for data in dataloader:
    try:
        split = gluon.utils.split_and_load(data, devices,even_split=False)
        print('split: ', split)
    except Exception as e:
        print('error0: ', e)


#问题源于nd.slice_axis函数报错
x = nd.array([[1., 2., 3., 4.],
     [5., 6., 7., 8.],
     [9., 10., 11., 12.]])
try:
    print(nd.slice_axis(x, axis=0, begin=1, end=1))
except Exception as e:
    print('error1: ', e)


#主要原因是多gpu训练拆分数据集,当batch的数据集不足以多gpu训练时,应采用与数据相同的gpu个数训练
#解决办法
for data in dataloader:
    if len(data)>=len(devices):
        split = gluon.utils.split_and_load(data, devices, even_split=False)
        print('split0: ', split)
    else:
        split = gluon.utils.split_and_load(data, devices[:len(data)], even_split=False)
        print('split1: ',split)

结果:

split:  [
[[0 1 2 3 4]]
<NDArray 1x5 @gpu(0)>, 
[[5 6 7 8 9]]
<NDArray 1x5 @gpu(1)>]
error0:  Traceback (most recent call last):
  File "src/operator/tensor/./matrix_op-inl.h", line 1296
MXNetError: Check failed: (*begin < *end): Invalid begin, end, get begin=1, end=1
error1:  Traceback (most recent call last):
  File "src/operator/tensor/./matrix_op-inl.h", line 1296
MXNetError: Check failed: (*begin < *end): Invalid begin, end, get begin=1, end=1
split0:  [
[[0 1 2 3 4]]
<NDArray 1x5 @gpu(0)>, 
[[5 6 7 8 9]]
<NDArray 1x5 @gpu(1)>]
split1:  [
[[10 11 12 13 14]]
<NDArray 1x5 @gpu(0)>]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值