#reshape #torch #autoencoder #epoch #mnist
#перекраивать #факел #Автокодировщик #эпоха #mnist
Вопрос:
мой код отлично работает для эпохи номер 1, но когда эпоха меняется, он перестает работать из-за другой формы. не могли бы вы, пожалуйста, помочь мне решить эту проблему? Я действительно ценю ваше время
transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))]) trainTransform = torchvision.transforms.Compose([torchvision.transforms.ToTensor(), torchvision.transforms.Normalize((0.1307,), (0.3081,))]) trainset = torchvision.datasets.FashionMNIST(root='{}/./data'.format(path_prefix), train = True, download = True, transform = transform) train_loader = torch.utils.data.DataLoader(trainset, batch_size=32, shuffle=False, num_workers=4) valset = torchvision.datasets.FashionMNIST(root='{}/./data'.format(path_prefix), train=False, download=True, transform=transform) val_loader = torch.utils.data.DataLoader(valset, batch_size=32, shuffle=False, num_workers=4) def train(self, epoch): # Note that you need to modify both trainer and loss_function for the VAE model self.model.train() train_loss = 0 for batch_idx, (data, _) in tqdm(enumerate(self.train_loader), total=len(self.train_loader) ) : data = data.view(data.shape[0], -1) data = data.to(self.device) #print(data.shape) #print(data) self.optimizer.zero_grad() recon_batch = self.model(data) loss = self.loss_function(recon_batch, data) loss.backward() train_loss = loss.item() self.optimizer.step() train_loss /= len(self.train_loader.dataset)/32 # 32 is the batch size print('====gt; Epoch: {} Average loss: {:.4f}'.format( epoch, train_loss ))
Ответ №1:
Пожалуйста, попробуйте удалить инструкцию «num_workers=4» в загрузчиках train и val. У меня была такая же ошибка, и это было причиной. Кроме того, tqdm усложняет ситуацию, поэтому, если у вас все еще есть ошибка, попробуйте отредактировать свой код без нее.