def test_kissgp_classification_error_cuda():
if torch.cuda.is_available():
train_x, train_y = train_data(cuda=True)
model = GPClassificationModel(train_x.data).cuda()
model.condition(train_x, train_y)
# Find optimal model hyperparameters
model.train()
optimizer = optim.Adam(model.parameters(), lr=0.1)
optimizer.n_iter = 0
for i in range(50):
optimizer.zero_grad()
output = model.forward(train_x)
loss = -model.marginal_log_likelihood(output, train_y)
loss.backward()
optimizer.n_iter += 1
optimizer.step()
# Set back to eval mode
model.eval()
test_preds = model(train_x).mean().ge(0.5).float().mul(2).sub(1).squeeze()
mean_abs_error = torch.mean(torch.abs(train_y - test_preds) / 2)
assert(mean_abs_error.data.squeeze()[0] < 1e-5)
评论列表
文章目录