| 31 | self.cross_entropy = nn.CrossEntropyLoss() |
| 32 | |
| 33 | def valid(self): |
| 34 | self.model.eval() |
| 35 | correct = 0 |
| 36 | total = 0 |
| 37 | epoch_loss = 0.0 |
| 38 | for batch_idx, (inputs, targets) in enumerate(self.testloader): |
| 39 | inputs, targets = inputs.to(device), targets.to(device) |
| 40 | self.opt.zero_grad() |
| 41 | if device == "cuda": |
| 42 | outputs, _ = self.model(inputs.unsqueeze(1).type(torch.cuda.FloatTensor)) |
| 43 | loss = self.cross_entropy(outputs, targets.type(torch.cuda.LongTensor)) # .max(1)[1].type() |
| 44 | else: |
| 45 | outputs, _ = self.model(inputs.unsqueeze(1).type(torch.FloatTensor)) |
| 46 | loss = self.cross_entropy(outputs, targets.type(torch.LongTensor)) |
| 47 | epoch_loss += loss.item() |
| 48 | _, predicted = outputs.max(1) |
| 49 | total += targets.size()[0] |
| 50 | correct += predicted.eq(targets).sum().item() |
| 51 | acc = 100.0 * correct / total |
| 52 | print(f" === test acc: {acc}") |
| 53 | return acc |
| 54 | |
| 55 | def train_step(self, epochs): |
| 56 | self.model.train() |