[ROUND 46]
(ClientAppActor pid=19430) Epoch 1: train loss 0.04561851918697357, accuracy 0.7244444444444444
(ClientAppActor pid=19430) Epoch 2: train loss 0.014976550824940205, accuracy 0.8888888888888888
(ClientAppActor pid=19430) Epoch 3: train loss 0.0069039249792695045, accuracy 0.9422222222222222
(ClientAppActor pid=19430) Epoch 4: train loss 0.006456168834120035, accuracy 0.96
(ClientAppActor pid=19430) Epoch 5: train loss 0.00863828044384718, accuracy 0.9755555555555555
(ClientAppActor pid=19430) Epoch 6: train loss 0.006962270010262728, accuracy 0.9777777777777777
(ClientAppActor pid=19430) Epoch 7: train loss 0.005828362889587879, accuracy 0.98
(ClientAppActor pid=19430) Epoch 8: train loss 0.005133980885148048, accuracy 0.9777777777777777
(ClientAppActor pid=19430) Epoch 9: train loss 0.010949545539915562, accuracy 0.9755555555555555
(ClientAppActor pid=19430) Epoch 10: train loss 0.009523502551019192, accuracy 0.9422222222222222
(ClientAppActor pid=19430) Epoch 11: train loss 0.006229229271411896, accuracy 0.9711111111111111
(ClientAppActor pid=19430) Epoch 12: train loss 0.009995320811867714, accuracy 0.9466666666666667
(ClientAppActor pid=19430) Epoch 13: train loss 0.01009974256157875, accuracy 0.96
(ClientAppActor pid=19430) Epoch 14: train loss 0.007053505629301071, accuracy 0.9511111111111111
(ClientAppActor pid=19430) Epoch 15: train loss 0.006583173759281635, accuracy 0.98
(ClientAppActor pid=19430) Epoch 16: train loss 0.0052153682336211205, accuracy 0.9711111111111111
(ClientAppActor pid=19430) Epoch 17: train loss 0.0056576901115477085, accuracy 0.9711111111111111
(ClientAppActor pid=19430) Epoch 18: train loss 0.0046274433843791485, accuracy 0.9666666666666667
(ClientAppActor pid=19430) Epoch 19: train loss 0.00983853917568922, accuracy 0.9822222222222222
(ClientAppActor pid=19430) Epoch 20: train loss 0.006027256604284048, accuracy 0.9666666666666667
(ClientAppActor pid=19430) WARNING : Deprecation Warning: The client_fn
function must return an instance of Client
, but an instance of NumpyClient
was returned. Please use NumPyClient.to_client()
method to convert it to Client
.
(ClientAppActor pid=19430) [Client 9, round 46] fit, config: {‘server_round’: 46, ‘local_epochs’: 20}
(ClientAppActor pid=19430) Epoch 1: train loss 0.018527183681726456, accuracy 0.9
(ClientAppActor pid=19430) Epoch 2: train loss 0.009994822554290295, accuracy 0.9088888888888889
(ClientAppActor pid=19430) Epoch 3: train loss 0.00463847815990448, accuracy 0.9688888888888889
(ClientAppActor pid=19430) Epoch 4: train loss 0.01055954024195671, accuracy 0.9488888888888889
(ClientAppActor pid=19430) Epoch 5: train loss 0.007692043669521809, accuracy 0.9622222222222222
(ClientAppActor pid=19430) Epoch 6: train loss 0.009808672592043877, accuracy 0.9711111111111111
(ClientAppActor pid=19430) Epoch 7: train loss 0.004187635611742735, accuracy 0.9711111111111111
(ClientAppActor pid=19430) Epoch 8: train loss 0.004012832418084145, accuracy 0.9822222222222222
(ClientAppActor pid=19430) Epoch 9: train loss 0.006340545602142811, accuracy 0.9866666666666667
(ClientAppActor pid=19430) Epoch 10: train loss 0.003088295226916671, accuracy 0.9933333333333333
(ClientAppActor pid=19430) Epoch 11: train loss 0.003897998249158263, accuracy 0.9733333333333334
(ClientAppActor pid=19430) Epoch 12: train loss 0.0048340861685574055, accuracy 0.9911111111111112
(ClientAppActor pid=19430) Epoch 13: train loss 0.005482752341777086, accuracy 0.98
(ClientAppActor pid=19430) Epoch 14: train loss 0.0050552962347865105, accuracy 0.98
(ClientAppActor pid=19430) Epoch 15: train loss 0.004689665976911783, accuracy 0.98
(ClientAppActor pid=19430) Epoch 16: train loss 0.00797532219439745, accuracy 0.9911111111111112
(ClientAppActor pid=19430) Epoch 17: train loss 0.0051014660857617855, accuracy 0.9866666666666667
(ClientAppActor pid=19430) Epoch 18: train loss 0.005336807109415531, accuracy 0.9844444444444445
(ClientAppActor pid=19430) Epoch 19: train loss 0.0060914442874491215, accuracy 0.9755555555555555
INFO : aggregate_fit: received 3 results and 0 failures
(ClientAppActor pid=19430) Epoch 20: train loss 0.010836077854037285, accuracy 0.96
INFO : fit progress: (46, 0.08252337455749512, {‘accuracy’: 0.5}, 3175.596651552)
as you can see, over the epochs my accuracy is pretty high, around ~90%
but in the last line it says {‘accuracy’: 0.5} why is this happening?
def train(net, trainloader, epochs: int):
“””Train the network on the training set.”””
criterion = torch.nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(net.parameters())
net.train()
for epoch in range(epochs):
correct, total, epoch_loss = 0, 0, 0.0
for images, labels in trainloader:
images, labels = images.to(DEVICE), labels.to(DEVICE)
optimizer.zero_grad()
outputs = net(images)
loss = criterion(net(images), labels)
loss.backward()
optimizer.step()
# Metrics
epoch_loss += loss
total += labels.size(0)
correct += (torch.max(outputs.data, 1)[1] == labels).sum().item()
epoch_loss /= len(trainloader.dataset)
epoch_acc = correct / total
print(f”Epoch {epoch+1}: train loss {epoch_loss}, accuracy {epoch_acc}”)
def test(net, testloader):
“””Evaluate the network on the entire test set.”””
criterion = torch.nn.CrossEntropyLoss()
correct, total, loss = 0, 0, 0.0
net.eval()
with torch.no_grad():
for images, labels in testloader:
images, labels = images.to(DEVICE), labels.to(DEVICE)
outputs = net(images)
loss += criterion(outputs, labels).item()
_, predicted = torch.max(outputs.data, 1)
total += labels.size(0)
correct += (predicted == labels).sum().item()
loss /= len(testloader.dataset)
accuracy = correct / total
return loss, accuracy
here’s my train and test functions for reference. im using efficientnet b0 on a federated dataset with 10 clients using flower.ai