Commit 77709b37 authored by Devanshu Agrawal's avatar Devanshu Agrawal
Browse files

Manual LR scheduler and change printing.

parent 554b800e
Loading
Loading
Loading
Loading
+6 −8
Original line number Diff line number Diff line
@@ -46,9 +46,8 @@ model = BottleneckNNGP(depths=args.depths, widths=args.widths, v_b=args.vb, v_w=
# define stochastic loss function
loss_fn = lambda num_samples, manual_samples: -model.log_likelihood(X, Y, num_samples=num_samples, manual_samples=manual_samples)/X.shape[0]

# get optimizer and LR scheduler
# get optimizer
optimizer = optim.Adam(model.parameters(), lr=args.lr)
scheduler = optim.lr_scheduler.MultiplicativeLR(optimizer, lr_lambda=lambda iter: 0.9)

# initialize results dict
results_train_keys = ["v_b", "v_w", "v_n", "loss", "loss_new", "delta_loss"]
@@ -74,23 +73,22 @@ for i in range(args.iters):
		delta_loss = loss_new-loss
	# decrease LR if loss increases
	if delta_loss.item() > 0:
		scheduler.step()
		for param_group in optimizer.param_groups:
			param_group["lr"] *= 0.9
	# update results
	for (key, value) in zip(results_train_keys, [model.v_b(), model.v_w(), model.v_n(), loss, loss_new, delta_loss]):
		results["train"][key].append( value.item() )
	# print loss info
	if i >= 5:
		print("iter {} delta loss {:.3f} % mov avg loss {:.3f}".format(i, 100*(loss_new/loss-1.0).item(), sum(results["train"]["loss"][-5:])/5))
	else:
		print("iter {} delta loss {:.3f} % mov avg loss ---".format(i, 100*(loss_new/loss-1.0).item()))
	print("iter {} loss {:.3f} delta loss {:.3f} %".format(i, loss.item(), 100*(loss_new/loss-1.0).item()))

# compute loss of final iteration
with torch.no_grad():
	loss = loss_fn(args.train_samples, None)
results["train"]["loss"].append(loss.item())

# record training time
# record and print training time
results["train"]["time"] = time.time()-time_0
print("Took {:.3f} seconds".format(results["train"]["time"]))

# get final values with higher number of samples
time_0 = time.time()