原计划是做数据增强的。
原始数据是一个numpy数组(H开头的)
生成的数据类型是一个tensor,device = cuda。(epoch开头的)
在制作dataset过程中是没问题的。在dataloader加载过程中会出现下面的问题:
原本的代码是
image = torch.from_numpy(hsi)
此时会显示报错:expected np.ndarray (got Tensor)
分析了一下原因是:我希望得到的是一个numpy数组,但是传送的是一个tensor。
说明在传送H那个数据是没问题的,
但是在传送epoch那个数据出现了问题。
因此我单独把那个epoch的数据读出来,确定了是这里出现了问题
因此采用网上的方法:
利用.detach().cpu().numpy() 来解决,发现这样读取生成的数据是ok的,但是,读取原本的数据会出错。原因是numpy数组没有detach这个方法。
那制作dataloader就麻烦很多了,因为两个数据是混在一起的,后面找到一个好的方式:
采用:torch.as_tensor(data,dtype = torch.float32,device = 'cpu')来解决,就能把这两类数据都能加载进来了。
最后总结一下:
如果只是查看生成的数据,加载的时候只需要使用:tensor.detach().cpu().numpy()来就可以了。
如果是想要两类数据放一起读取,就采用torch.as_tensor(data,dtype = torch.float32,device = 'cpu')来解决。