提问者:小点点

不支持numpy数组类型?


我试图复制一个模型,我能够遵循和运行通过教程,但这一次是我自己的数据。

我能够将我自己的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阵列类型? 如果是的话,我该如何将它们更改为正确的类型呢?


共1个答案

匿名用户

您可以使用astype重新定义变量

your_array = your_array.astype(np.uint16)