Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pytorch自定义数据集:ValueError:给定numpy数组的某些步长为负值_Python_Pytorch - Fatal编程技术网

Python Pytorch自定义数据集:ValueError:给定numpy数组的某些步长为负值

Python Pytorch自定义数据集:ValueError:给定numpy数组的某些步长为负值,python,pytorch,Python,Pytorch,我编写了一个定制的pytorch数据集,但遇到了一个似乎很难理解的错误 我的自定义数据集 类数据\u来自\u xlsxDataset: 定义初始自我、xlsx fp、路径列、类列列表: self.xlsx\u file=pd.read\u excelxlsx\u fp self.path\u col=path\u col self.class\u cols\u list=class\u cols\u list def___________________________自已: 返回get_xls

我编写了一个定制的pytorch数据集,但遇到了一个似乎很难理解的错误

我的自定义数据集

类数据\u来自\u xlsxDataset: 定义初始自我、xlsx fp、路径列、类列列表: self.xlsx\u file=pd.read\u excelxlsx\u fp self.path\u col=path\u col self.class\u cols\u list=class\u cols\u list def___________________________自已: 返回get_xlsx_lengthself.xlsx_文件 定义获取项目自身,索引: file_path=cols_from_xlsxself.xlsx_文件,索引,1,self.path_col 功能=加载文件路径获取三维卷x、y、z 特征=np.展开尺寸特征,轴=0添加通道c,x,y,z label=cols\u从\u xlsxself.xlsx\u文件,索引,1,self.class\u cols\u列表获取标签 返回特性,label.astypenp.bool def主: dataset=data_from_xlsxtrain.xlsx,文件路径[pos,neg],转换,aug=True 数据加载程序=DataLoaderdataset,批量大小=4,随机播放=True 对于数据加载器中的f、l: printf-shape,f.shape 打印形状,打印形状 当我运行main时报告了一个错误


报告的错误对我来说没有意义,所以我用谷歌搜索了一下。起初我认为我没有将feature从numpy.array更改为tensor,所以我尝试了feature=torch.from_arrayfeature.copy,还尝试了transforms.TOTensor,但两次尝试都失败了。

多亏@jodag和@UsmanAli的建议,我通过返回torch.from_numpyfeature.copy和torch.tensorlabel.astypenp.bool解决了这个问题 所以整个事情应该是

类数据\u来自\u xlsxDataset: 定义初始自我、xlsx fp、路径列、类列列表: self.xlsx\u file=pd.read\u excelxlsx\u fp self.path\u col=path\u col self.class\u cols\u list=class\u cols\u list def___________________________自已: 返回get_xlsx_lengthself.xlsx_文件 定义获取项目自身,索引: file_path=cols_from_xlsxself.xlsx_文件,索引,1,self.path_col 功能=加载文件路径获取三维卷x、y、z 特征=np.展开尺寸特征,轴=0添加通道c,x,y,z label=cols\u从\u xlsxself.xlsx\u文件,索引,1,self.class\u cols\u列表获取标签 返回torch.from_numpyfeature.copy,torch.tensorlabel.astypenp.bool
在某些情况下,可能需要以内存C顺序返回连续数组ndim>=1。然后,你就可以用火炬了

点击查看更多信息


好运。

为了让你的生活更轻松,你可以考虑从数据集中返回Tror。张量或数字列表,而不是NUMPY数组。尝试处理numpy数组,但显然失败了。collate函数从数据集中获取多个输出的列表,并将它们转换为成批的torch张量。另一种方法是编写自己的collate函数并将其交给数据加载器,例如DataLoader…,collate\u fn=my\u collate\u fn据我所知,此问题已得到解决。但是,您可以返回这个,torch.from_numpyfeature.copy另外,我认为Dataloader不支持Numpy bool类型,您可能还需要将标签转换为张量,torch.tensorlabel.astypenp。bool@UsmanAli哇,太棒了!谢谢但我仍然很困惑我为什么要这样做。据我所知,我需要先把numpy数组转换成torch张量,然后再把它转换成网络。所以我也试着返回像torch.FloatTensorfeature和torch.BoolTensorlabel这样的东西,但它就是不起作用。@UsmanAli所以我只是对何时以及如何进行这个torch tensor转换没有信心。太棒了!我也有同样的问题,浪费了几乎一天的时间,直到我找到了这个解决方案。非常感谢你!
 File "d:\pytorch\lib\site-packages\torch\utils\data\dataloader.py", line 346, in __next__
    data = self.dataset_fetcher.fetch(index)  # may raise StopIteration
  File "d:\pytorch\lib\site-packages\torch\utils\data\_utils\fetch.py", line 47, in fetch
    return self.collate_fn(data)
  File "d:\pytorch\lib\site-packages\torch\utils\data\_utils\collate.py", line 80, in default_collate
    return [default_collate(samples) for samples in transposed]
  File "d:\pytorch\lib\site-packages\torch\utils\data\_utils\collate.py", line 80, in <listcomp>
    return [default_collate(samples) for samples in transposed]
  File "d:\pytorch\lib\site-packages\torch\utils\data\_utils\collate.py", line 65, in default_collate
    return default_collate([torch.as_tensor(b) for b in batch])
  File "d:\pytorch\lib\site-packages\torch\utils\data\_utils\collate.py", line 65, in <listcomp>
    return default_collate([torch.as_tensor(b) for b in batch])
ValueError: some of the strides of a given numpy array are negative. This is currently not supported, but will be added in future release