ValueError:only one element tensors can be converted to Python scalars 解决方法

错误部分

错误原因

disp_image部分是一个维度为[1,4]的tensors。因此不可将元素逐个读取出来。

解决方案

将tensor转换成numpy, 再将numpy转换为list

具体做法

ndarray = disp_rect.cpu().numpy() #将tensor转换为ndarray
list = ndarray.tolist() #将ndarray转换为list

此时,已经把数据处理成可用状态,但是数据集中的tensor维度不一致,

导致仍然报错,具体来说为tensor有些维度为【1,4】,有些为【4,】也就是总维度为2/1维。因此

解决方案

将2维的部分降为1维

            if ndarray.shape[0] == 1:
                list = ndarray.tolist()
                re_rect = [token for set in list for token in set]

如果第一维为1,则进行降维操作,否则

         else:
                list = ndarray.tolist()

直接转换为list

经过此步骤可以使得tensor都成为【4,】

问题解决

你可能感兴趣的:(python,numpy,机器学习)