Numpy Pytorch Dataloader-TypeError:未找到与ufunc true_divide的指定签名和强制转换匹配的循环
我抛出了这个错误,不幸的是,我找不到任何建议可以解决我的问题。 错误来自我的pytorch数据加载器,当我手动运行它的内容时,没有问题 以下是错误:Numpy Pytorch Dataloader-TypeError:未找到与ufunc true_divide的指定签名和强制转换匹配的循环,numpy,matplotlib,pytorch,dataloader,Numpy,Matplotlib,Pytorch,Dataloader,我抛出了这个错误,不幸的是,我找不到任何建议可以解决我的问题。 错误来自我的pytorch数据加载器,当我手动运行它的内容时,没有问题 以下是错误: --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-30-f7
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-30-f7e6029a4c31> in <module>
----> 1 x = runmodel(epochs=20)
<ipython-input-29-3bb7c79f0006> in runmodel(epochs)
14 print("Epoch = "+str(epoch))
15 with torch.set_grad_enabled(True):
---> 16 epoch_train_loss = training(model=model)
17 print("Train Loss: ",epoch_train_loss)
18 track_epoch_train_loss.append(epoch_train_loss)
<ipython-input-28-626c82187ad7> in training(model)
3 current_loss = 0
4 current_correct = 0
----> 5 for t, (train, y_train) in enumerate(training_generator):
6 model.train()
7 train = train.to(device=device, dtype=dtype)
~/anaconda3/lib/python3.7/site-packages/torch/utils/data/dataloader.py in __next__(self)
343
344 def __next__(self):
--> 345 data = self._next_data()
346 self._num_yielded += 1
347 if self._dataset_kind == _DatasetKind.Iterable and \
~/anaconda3/lib/python3.7/site-packages/torch/utils/data/dataloader.py in _next_data(self)
383 def _next_data(self):
384 index = self._next_index() # may raise StopIteration
--> 385 data = self._dataset_fetcher.fetch(index) # may raise StopIteration
386 if self._pin_memory:
387 data = _utils.pin_memory.pin_memory(data)
~/anaconda3/lib/python3.7/site-packages/torch/utils/data/_utils/fetch.py in fetch(self, possibly_batched_index)
42 def fetch(self, possibly_batched_index):
43 if self.auto_collation:
---> 44 data = [self.dataset[idx] for idx in possibly_batched_index]
45 else:
46 data = self.dataset[possibly_batched_index]
~/anaconda3/lib/python3.7/site-packages/torch/utils/data/_utils/fetch.py in <listcomp>(.0)
42 def fetch(self, possibly_batched_index):
43 if self.auto_collation:
---> 44 data = [self.dataset[idx] for idx in possibly_batched_index]
45 else:
46 data = self.dataset[possibly_batched_index]
<ipython-input-8-4711e033b45e> in __getitem__(self, index)
12
13 ID = self.ids[index]
---> 14 X = np.array(plt.imread('train/' + ID + '.png' ),dtype = np.float32)
15 X = np.repeat(X[:, :, np.newaxis], 3, axis=2)
16 X = np.transpose(X)
~/anaconda3/lib/python3.7/site-packages/matplotlib/pyplot.py in imread(fname, format)
2228 @_copy_docstring_and_deprecators(matplotlib.image.imread)
2229 def imread(fname, format=None):
-> 2230 return matplotlib.image.imread(fname, format)
2231
2232
~/anaconda3/lib/python3.7/site-packages/matplotlib/image.py in imread(fname, format)
1486 with img_open(fname) as image:
1487 return (_pil_png_to_float_array(image)
-> 1488 if isinstance(image, PIL.PngImagePlugin.PngImageFile) else
1489 pil_to_array(image))
1490
~/anaconda3/lib/python3.7/site-packages/matplotlib/image.py in _pil_png_to_float_array(pil_png)
1653 return np.divide(pil_png, 2**4 - 1, dtype=np.float32)
1654 if rawmode == "L": # Grayscale.
-> 1655 return np.divide(pil_png, 2**8 - 1, dtype=np.float32)
1656 if rawmode == "I;16B": # Grayscale.
1657 return np.divide(pil_png, 2**16 - 1, dtype=np.float32)
TypeError: No loop matching the specified signature and casting
was found for ufunc true_divide
我已经尝试确保数据类型是float,升级和降级numpy/matplotlib。
提前感谢任何人提供的任何帮助
class Dataset(Dataset):
def __init__(self, ids):
'Initialization'
self.ids = ids
def __len__(self):
'Denotes the total number of samples'
return len(self.ids)
def __getitem__(self, index):
'Generates one sample of data'
ID = self.ids[index]
X = np.array(plt.imread('train/' + ID + '.png' ),dtype = np.float32)
X = np.repeat(X[:, :, np.newaxis], 3, axis=2)
X = np.transpose(X)
y = np.array(plt.imread('masks/' + ID + '.png'), dtype = np.float32)
return X, y