def test_sgd_gpu(self): np.random.seed(1337) model = TinyBobNet() [x.cuda_() for x in model.parameters()] optimizer = optim.SGD(model.parameters(), lr=0.001) train(model, optimizer, steps=1000, gpu=True) evaluate(model, gpu=True)
def train(model): optim = optimizer.SGD([model.c1, model.c2, model.l1], lr=0.001) iters = 5 * classes BS = 32 log_skip = 5 print(f"training with {classes} emojis over {BS * iters} iters batched by {BS}") import time t0 = time.time() for _ in range(iters): samp = np.random.randint(0, files.shape[0], size=(BS)) img = to_gpu(Tensor(perturb(files[samp]))) out = model.forward(img) y = np.zeros((BS, classes), dtype=np.float32) # cross entropy loss trick y[range(y.shape[0]), samp] = -classes y = to_gpu(Tensor(y)) loss = out.mul(y).mean() optim.zero_grad() loss.backward() optim.step() if _ % log_skip == 0: t1 = time.time() iters_sec = log_skip * BS / (t1 - t0) minutes = (BS * (iters - _) / iters_sec) / 60 sys.stdout.write("\u001b[1000D") sys.stdout.write("\u001b[0K") sys.stdout.write( f"[{100 * _ / iters:.2f}% ~{int(minutes)}min left] loss={loss.cpu().data[0]:.2f}" ) sys.stdout.write( f" (running @ {iters_sec:.2f} iters/s, feel free to kill at any time)" ) sys.stdout.flush() t0 = t1
def test_sgd(self): np.random.seed(1337) model = TinyBobNet() optimizer = optim.SGD(model.parameters(), lr=0.001) train(model, X_train, Y_train, optimizer, steps=1000, device=self.device) assert evaluate(model, X_test, Y_test, device=self.device) > 0.95
def test_sgd(self): np.random.seed(1337) model = TinyBobNet() optimizer = optim.SGD(model.parameters(), lr=0.001) train(model, optimizer, steps=1000, gpu=self.gpu) evaluate(model, gpu=self.gpu)
def test_sgd(self): np.random.seed(1337) model = TinyBobNet() optimizer = optim.SGD([model.l1, model.l2], lr=0.001) train(model, optimizer, steps=1000) evaluate(model)