Is there any way of separating the final fully connected layer weights after a few local epochs of training? How could I append them into a vector?
def train(self, is_print = False):
self.net.to(self.device)
self.net.train()
optimizer = torch.optim.SGD(self.net.parameters(), lr=self.lr, momentum=self.momentum, weight_decay=0)
epoch_loss = []
for iteration in range(self.local_ep):
batch_loss = []
for batch_idx, (images, labels) in enumerate(self.ldr_train):
images, labels = images.to(self.device), labels.to(self.device)
self.net.zero_grad()
#optimizer.zero_grad()
log_probs = self.net(images)
loss = self.loss_func(log_probs, labels)
loss.backward()
optimizer.step()
batch_loss.append(loss.item())
epoch_loss.append(sum(batch_loss)/len(batch_loss))
return sum(epoch_loss) / len(epoch_loss)