错误部分
错误原因
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,】