I want to train a model on some
.npz images and I Have created the following class for loading the data:
class data_gen(torch.utils.data.Dataset): def __init__(self, files): self.files = files def __getitem__(self, i): file1 = self.files[i] tmp = np.load(file1, allow_pickle=True) img = tmp['x'] img = np.reshape(img,(1,img.shape, img.shape)) img = torch.from_numpy(img).float() return img def __len__(self): return len(self.files)
And then, I create a
DataLoader in the following way:
train_ds = data_gen(X_train) test_ds = data_gen(X_test) dls = DataLoaders.from_dsets(train_ds, test_ds, bs=batch_size, device='cuda:0')
However, when I get to training:
learn = Learner(dls,m,loss_func=F.mse_loss) learn.fit(10,lr)
I get the following error:
RuntimeError: Expected 4-dimensional input for 4-dimensional weight [64, 1, 7, 7], but got 3-dimensional input of size [1, 512, 512] instead
dls.train instead of
dls (which is of the shape
(16X1X512X512)) but even that doesn’t help.
I also tried to train on one batch of data but I would get the following error:
AttributeError: 'Tensor' object has no attribute 'train'
What should I do?
PS: My fastai version is 2.0.1