Skip to content

Instantly share code, notes, and snippets.

@arnabchakraborty97
Last active August 19, 2020 11:15
Show Gist options
  • Save arnabchakraborty97/f5858237077be3804eba4cdb31ee888b to your computer and use it in GitHub Desktop.
Save arnabchakraborty97/f5858237077be3804eba4cdb31ee888b to your computer and use it in GitHub Desktop.
EPOCHS = 150
for epoch in range(EPOCHS):
model.train()
running_loss = 0.0
for batch_idx, (data, target) in \
enumerate(zip(inputs_train, np.expand_dims(outputs_train, axis=1))):
# Get Samples
data = torch.from_numpy(np.array(data, dtype=np.float32))
target = torch.from_numpy(np.array(target, dtype=np.int64))
if cuda:
data, target = data.cuda(), target.cuda()
# Init
optimizer.zero_grad()
# Predict
y_pred = model(data)
# Calculate loss
loss = criterion(y_pred, target) #;F.cross_entropy(y_pred, target)
running_loss += loss.cpu().data
# Backpropagation
loss.backward()
optimizer.step()
# Display
if (batch_idx == inputs_train.shape[0]-1):
model.eval()
output = model(torch.from_numpy(np.array(inputs_train, dtype=np.float32)))
pred = output.data.max(1)[1]
d = pred.eq(torch.from_numpy(outputs_train))
accuracy = d.sum().item()/d.size().numel()
print('\rTrain Epoch: {}/{} [{}/{} ({:.0f}%)]\tLoss: {:.6f}\tAccuracy: {}/{}={:.1f}%'.format(
epoch+1,
EPOCHS,
batch_idx+1,
inputs_train.shape[0],
100. * (batch_idx+1) / inputs_train.shape[0],
running_loss/inputs_train.shape[0],
d.sum(), d.size().numel(), accuracy*100,
end=''))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment