请教大家一个问题:有小伙伴用过ops.MaskedSelect()算子吗?
运行环境:鹏城云脑,mindspore1.3
报错如下:

其中:
loc_data.shape: (1, 32760, 4)
pos_idx.shape: (1, 32760, 4)
代码如下:
# wrap targets
loc_t = F.stop_gradient(loc_t)
conf_t = F.stop_gradient(conf_t)
pos = conf_t > 0
# Localization Loss (Smooth L1)
# Shape: [batch,num_priors,4]
# pos_idx = pos.unsqueeze(pos.dim()).expand_as(loc_data)
cast = ops.Cast()
pos = cast(pos, mindspore.float32)
expand_dims = ops.ExpandDims()
pos_idx = expand_dims(pos, pos.dim()).expand_as(loc_data)
print("******************************")
print("loc_data.shape:",loc_data.shape)
print("pos_idx.shape:",pos_idx.shape)
# expand_dims = ops.ExpandDims()
# pos_idx = expand_dims(pos, pos.dim()).expand_as(loc_data)
pos_idx = cast(pos_idx, mindspore.bool_)
# loc_p = loc_data[pos_idx].view(-1,4)
loc_p = (ops.MaskedSelect()(loc_data, pos_idx))
print("loc_p.shape:",loc_p.shape)
print("loc_p.dtype:",loc_p.dtype)
loc_p = loc_p.view((-1,4))
#loc_p = Tensor(loc_p, dtype=mstype.float32)
# loc_t = loc_t[pos_idx].view(-1,4)
loc_t = (ops.MaskedSelect()(loc_t, pos_idx)).view((-1,4))
print("loc_t.shape:",loc_t.shape)
print("loc_t.dtype:",loc_t.dtype)
#loc_t = Tensor(loc_t, dtype=mstype.float32)
# loss_l = F.smooth_l1_loss(loc_p, loc_t, reduction='sum')
loss = P.SmoothL1Loss()
loss_l = loss(loc_p, loc_t)
还没有训练就开始出错了,这是什么原因呢?
请参考检查下
mindspore.ops.MaskedSelect — MindSpore master documentation
需要注意下数据的类型和使用方式