include/mxnet/./tuple.h:220: Check failed: i >= 0 && i < ndim(): index = 1 must be in range [0, -1)

报错:

terminate called after throwing an instance of 'dmlc::Error'
  what():  [10:17:39] include/mxnet/./tuple.h:220: Check failed: i >= 0 && i < ndim(): index = 1 must be in range [0, -1)
Stack trace:
  [bt] (0) /home/user1/miniconda3/lib/python3.7/site-packages/mxnet/libmxnet.so(+0x307d3b) [0x7f1147037d3b]
  [bt] (1) /home/user1/miniconda3/lib/python3.7/site-packages/mxnet/libmxnet.so(+0x30a9f8) [0x7f114703a9f8]
  [bt] (2) /home/user1/miniconda3/lib/python3.7/site-packages/mxnet/libmxnet.so(+0x8d0444) [0x7f1147600444]
  [bt] (3) /home/user1/miniconda3/lib/python3.7/site-packages/mxnet/libmxnet.so(+0x345ae5d) [0x7f114a18ae5d]

复现代码:

暂时没能复现。。可能之前的代码写的确实太挫了,写不回去了

解析:
mxnet的报错没头没脑的,根本看不出来是哪行代码引起的。

多方面排查:

  1. 网络层定义的原因
  2. shape对不上的原因
  3. 自己的实现是否能反映论文中的结构

解决:

...
########################## GDN #######################################
gdn = mx.sym.FullyConnected(data=fc1, num_hidden=256, name='gdn_fc1')
gdn = mx.sym.BatchNorm(data=gdn, fix_gamma=False, eps=2e-5, momentum=bn_mom, name='gdn_bn1')

gdn = mx.sym.FullyConnected(data=gdn, num_hidden=256, name='gdn_fc2')
gdn = mx.sym.BatchNorm(data=gdn, fix_gamma=False, eps=2e-5, momentum=bn_mom, name='gdn_bn2')
print('Added GDN')
########################## GDN #######################################
gdn = mx.sym.FullyConnected(data=gdn, num_hidden=4, name='gdn_out_fc3')  # [batch_size, 2048]
gdnWeights = mx.sym.SoftmaxActivation(data=gdn, name='gdn_out_softmax')
gdnWeights = mx.sym.reshape(gdnWeights, (-1, 4, 1))
groupsFc = mx.sym.concat(fc2, fc3, fc4, fc5, dim=1)  # dim=1,Stitching by row,(1 row, 512 columns) per sample,[batch_size, 2048]
groupsFc = mx.sym.reshape(groupsFc, (-1, 4, 512))
fcGroups = mx.sym.broadcast_mul(groupsFc, gdnWeights)
fcGroups = mx.sym.sum_axis(fcGroups, axis=1)  # axis=1, sum by row, [batch_size, 512] -> [batch_size, 1]

fc1 = fc1 + fcGroups  # (1, 512) + (1,512)
print('Net built.')
return fc1

猜你喜欢

转载自blog.csdn.net/qxqxqzzz/article/details/107634130