from torchmetrics.classification import MulticlassAccuracy
class MultiClassModel(pl.LightningModule):
def __init__(self):
super().__init__()
self.fc1 = nn.Linear(28*28, 128)
self.fc2 = nn.Linear(128, 64)
self.fc3 = nn.Linear(64, 10)
self.accuracy = MulticlassAccuracy(10)
def forward(self, x):
x = x.view(-1, 28*28)
x = torch.relu(self.fc1(x))
x = torch.relu(self.fc2(x))
x = self.fc3(x)
return x
def configure_optimizers(self):
optimizer = torch.optim.Adam(self.parameters(), lr=0.001)
return optimizer
def training_step(self, batch, batch_idx):
images, labels = batch
outputs = self(images)
loss = F.cross_entropy(outputs, labels)
self.log('loss', loss)
accuracy = self.accuracy(outputs, labels)
self.log('accuracy', accuracy)
return loss
def test_step(self, batch, batch_idx):
return self.training_step(batch, batch_idx)