我试图复制一个模型,我能够遵循和运行通过教程,但这一次是我自己的数据。
我能够将我自己的MRI图像转换成与教程数据相同维度的numpy阵列。
我尝试用自己的数组替换教程中的numpy数组,并编写自己虚构的csv文件,用于正常或异常(大小写,不是大小写)。
然而,当我运行它时,我得到:
(Pytorch) C:\Users\GlaDOS\PythonProjects\dicomnpy>python train.py -t acl -p sagittal --epochs=10 --prefix_name hue
Traceback (most recent call last):
File "train.py", line 277, in <module>
run(args)
File "train.py", line 214, in run
mrnet, train_loader, epoch, num_epochs, optimizer, writer, current_lr, log_every)
File "train.py", line 34, in train_model
for i, (image, label, weight) in enumerate(train_loader):
File "C:\Users\GlaDOS\anaconda3\envs\Pytorch\lib\site-packages\torch\utils\data\dataloader.py", line 345, in __next__
data = self._next_data()
File "C:\Users\GlaDOS\anaconda3\envs\Pytorch\lib\site-packages\torch\utils\data\dataloader.py", line 385, in _next_data
data = self._dataset_fetcher.fetch(index) # may raise StopIteration
File "C:\Users\GlaDOS\anaconda3\envs\Pytorch\lib\site-packages\torch\utils\data\_utils\fetch.py", line 44, in fetch
data = [self.dataset[idx] for idx in possibly_batched_index]
File "C:\Users\GlaDOS\anaconda3\envs\Pytorch\lib\site-packages\torch\utils\data\_utils\fetch.py", line 44, in <listcomp>
data = [self.dataset[idx] for idx in possibly_batched_index]
File "C:\Users\GlaDOS\PythonProjects\dicomnpy\dataloader.py", line 56, in __getitem__
array = self.transform(array)
File "c:\users\glados\src\torchsample\torchsample\transforms\tensor_transforms.py", line 32, in __call__
inputs = transform(*inputs)
File "C:\Users\GlaDOS\anaconda3\envs\Pytorch\lib\site-packages\torchvision\transforms\transforms.py", line 313, in __call__
return self.lambd(img)
File "train.py", line 167, in <lambda>
transforms.Lambda(lambda x: torch.Tensor(x)),
TypeError: can't convert np.ndarray of type numpy.uint16. The only supported types are: float64, float32, float16, int64, int32, int16, int8, uint8, and bool.
现在我想知道这个错误是否意味着我没有把我的MRI转换成“正确的”numpy阵列类型? 如果是的话,我该如何将它们更改为正确的类型呢?
您可以使用astype
重新定义变量
your_array = your_array.astype(np.uint16)