in low_shot.py [0:0]
def training_loop(lowshot_dataset, num_classes, params, batchsize=1000, maxiters=1000):
featdim = lowshot_dataset.featdim()
model = nn.Linear(featdim, num_classes)
model = model.cuda()
optimizer = torch.optim.SGD(model.parameters(), params.lr, momentum=params.momentum, dampening=params.momentum, weight_decay=params.wd)
loss_function = nn.CrossEntropyLoss()
loss_function = loss_function.cuda()
for i in range(maxiters):
(x,y) = lowshot_dataset.get_sample(batchsize)
optimizer.zero_grad()
x = Variable(x.cuda())
y = Variable(y.cuda())
scores = model(x)
loss = loss_function(scores,y)
loss.backward()
optimizer.step()
if (i%100==0):
print('{:d}: {:f}'.format(i, loss.data[0]))
return model