在跑mindspore模型的预测过程中,想打印一个包含字符串的list中的单个字符串,但报错

在跑mindspore模型的预测过程中,我想打印一个包含字符串的list中的单个字符串,但报错。

很奇怪的一点是我如果直接打印这个list,不会报错,但如果我想访问这个list里面的某一个字符串,就会报错,我不知道这是否和mindspore的内部机制有关。

相关代码:

  for i, data in tqdm(enumerate(data_loader.create_tuple_iterator()), total=data_loader.get_dataset_size()):
        imgs = ops.squeeze(ms.Tensor(data[0]))
        names = data[1]
        print(names)#不会报错
        print(names[0])#会报错
        centers = data[2][:,0]
        scales = data[2][:,1]
        output =pose_estimator.model(imgs)

报错信息:

Traceback (most recent call last):
  File "prepare_pose_estimation.py", line 98, in 
    pose_estimation(**vars(args))
  File "prepare_pose_estimation.py", line 58, in pose_estimation
    print(names[0])
  File "D:\anaconda\envs\gaitRecognition\lib\site-packages\mindspore\common\tensor.py", line 337, in __getitem__
    out = tensor_operator_registry.get('__getitem__')(self, index)
  File "D:\anaconda\envs\gaitRecognition\lib\site-packages\mindspore\ops\composite\multitype_ops\_compile_utils.py", line 46, in _tensor_getitem
    return _tensor_index_by_integer(self, index)
  File "D:\anaconda\envs\gaitRecognition\lib\site-packages\mindspore\ops\composite\multitype_ops\_compile_utils.py", line 393, in _tensor_index_by_integer
    return P.StridedSlice(begin_mask, end_mask, 0, 0, shrink_axis_mask)(data, begin_strides, end_strides, step_strides)
  File "D:\anaconda\envs\gaitRecognition\lib\site-packages\mindspore\ops\primitive.py", line 294, in __call__
    return _run_op(self, self.name, args)
  File "D:\anaconda\envs\gaitRecognition\lib\site-packages\mindspore\common\api.py", line 98, in wrapper
    results = fn(*arg, **kwargs)
  File "D:\anaconda\envs\gaitRecognition\lib\site-packages\mindspore\ops\primitive.py", line 748, in _run_op
    output = real_run_op(obj, op_name, args)
TypeError: Operator[StridedSlice]  input(String) output(String) is not supported. This error means the current input type is not supported, please refer to the MindSpore doc for supported types.

----------------------------------------------------
- C++ Call Stack: (For framework developers)
----------------------------------------------------
mindspore\ccsrc\plugin\device\cpu\hal\hardware\cpu_device_context.cc:258 SetOperatorInfo

****************************************************解答*****************************************************

报错里面说:

Operator[StridedSlice] input(String) output(String) is not supported.

但是这个算子的文档显示:

既然出错在print(names[0]),可能就需要把names改成Tensor才能索引。

但这个算子是切片算子啊,怎么会在索引上出错?你确定去掉了print(names[0])这行也能正常执行?

 

names类型是Tensor,不支持切片操作

转成numpy就可以了

names.asnumpy()[0]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值