1
0
mirror of https://github.com/microsoft/qlib.git synced 2026-07-17 01:14:35 +08:00

Add torch.no_grad for evaluation

This commit is contained in:
D-X-Y
2021-03-12 02:46:04 +00:00
parent 67fbdafe76
commit db59713d36
5 changed files with 35 additions and 37 deletions

View File

@@ -208,12 +208,13 @@ class ALSTM(Model):
feature = torch.from_numpy(x_values[indices[i : i + self.batch_size]]).float().to(self.device) feature = torch.from_numpy(x_values[indices[i : i + self.batch_size]]).float().to(self.device)
label = torch.from_numpy(y_values[indices[i : i + self.batch_size]]).float().to(self.device) label = torch.from_numpy(y_values[indices[i : i + self.batch_size]]).float().to(self.device)
pred = self.ALSTM_model(feature) with torch.no_grad():
loss = self.loss_fn(pred, label) pred = self.ALSTM_model(feature)
losses.append(loss.item()) loss = self.loss_fn(pred, label)
losses.append(loss.item())
score = self.metric_fn(pred, label) score = self.metric_fn(pred, label)
scores.append(score.item()) scores.append(score.item())
return np.mean(losses), np.mean(scores) return np.mean(losses), np.mean(scores)
@@ -295,10 +296,7 @@ class ALSTM(Model):
x_batch = torch.from_numpy(x_values[begin:end]).float().to(self.device) x_batch = torch.from_numpy(x_values[begin:end]).float().to(self.device)
with torch.no_grad(): with torch.no_grad():
if self.use_gpu: pred = self.ALSTM_model(x_batch).detach().cpu().numpy()
pred = self.ALSTM_model(x_batch).detach().cpu().numpy()
else:
pred = self.ALSTM_model(x_batch).detach().numpy()
preds.append(pred) preds.append(pred)

View File

@@ -195,12 +195,13 @@ class ALSTM(Model):
# feature[torch.isnan(feature)] = 0 # feature[torch.isnan(feature)] = 0
label = data[:, -1, -1].to(self.device) label = data[:, -1, -1].to(self.device)
pred = self.ALSTM_model(feature.float()) with torch.no_grad():
loss = self.loss_fn(pred, label) pred = self.ALSTM_model(feature.float())
losses.append(loss.item()) loss = self.loss_fn(pred, label)
losses.append(loss.item())
score = self.metric_fn(pred, label) score = self.metric_fn(pred, label)
scores.append(score.item()) scores.append(score.item())
return np.mean(losses), np.mean(scores) return np.mean(losses), np.mean(scores)

View File

@@ -208,12 +208,13 @@ class GRU(Model):
feature = torch.from_numpy(x_values[indices[i : i + self.batch_size]]).float().to(self.device) feature = torch.from_numpy(x_values[indices[i : i + self.batch_size]]).float().to(self.device)
label = torch.from_numpy(y_values[indices[i : i + self.batch_size]]).float().to(self.device) label = torch.from_numpy(y_values[indices[i : i + self.batch_size]]).float().to(self.device)
pred = self.gru_model(feature) with torch.no_grad():
loss = self.loss_fn(pred, label) pred = self.gru_model(feature)
losses.append(loss.item()) loss = self.loss_fn(pred, label)
losses.append(loss.item())
score = self.metric_fn(pred, label) score = self.metric_fn(pred, label)
scores.append(score.item()) scores.append(score.item())
return np.mean(losses), np.mean(scores) return np.mean(losses), np.mean(scores)

View File

@@ -195,12 +195,13 @@ class GRU(Model):
# feature[torch.isnan(feature)] = 0 # feature[torch.isnan(feature)] = 0
label = data[:, -1, -1].to(self.device) label = data[:, -1, -1].to(self.device)
pred = self.GRU_model(feature.float()) with torch.no_grad():
loss = self.loss_fn(pred, label) pred = self.GRU_model(feature.float())
losses.append(loss.item()) loss = self.loss_fn(pred, label)
losses.append(loss.item())
score = self.metric_fn(pred, label) score = self.metric_fn(pred, label)
scores.append(score.item()) scores.append(score.item())
return np.mean(losses), np.mean(scores) return np.mean(losses), np.mean(scores)
@@ -280,10 +281,7 @@ class GRU(Model):
feature = data[:, :, 0:-1].to(self.device) feature = data[:, :, 0:-1].to(self.device)
with torch.no_grad(): with torch.no_grad():
if self.use_gpu: pred = self.GRU_model(feature.float()).detach().cpu().numpy()
pred = self.GRU_model(feature.float()).detach().cpu().numpy()
else:
pred = self.GRU_model(feature.float()).detach().numpy()
preds.append(pred) preds.append(pred)

View File

@@ -272,12 +272,12 @@ class TabnetModel(Model):
label = y_values[indices[i : i + self.batch_size]].float().to(self.device) label = y_values[indices[i : i + self.batch_size]].float().to(self.device)
priors = torch.ones(self.batch_size, self.d_feat).to(self.device) priors = torch.ones(self.batch_size, self.d_feat).to(self.device)
with torch.no_grad(): with torch.no_grad():
pred = self.tabnet_model(feature, priors) pred = self.tabnet_model(feature, priors)
loss = self.loss_fn(pred, label) loss = self.loss_fn(pred, label)
losses.append(loss.item()) losses.append(loss.item())
score = self.metric_fn(pred, label) score = self.metric_fn(pred, label)
scores.append(score.item()) scores.append(score.item())
return np.mean(losses), np.mean(scores) return np.mean(losses), np.mean(scores)
@@ -361,10 +361,10 @@ class TabnetModel(Model):
S_mask = S_mask.to(self.device) S_mask = S_mask.to(self.device)
priors = 1 - S_mask priors = 1 - S_mask
with torch.no_grad(): with torch.no_grad():
(vec, sparse_loss) = self.tabnet_model(feature, priors) (vec, sparse_loss) = self.tabnet_model(feature, priors)
f = self.tabnet_decoder(vec) f = self.tabnet_decoder(vec)
loss = self.pretrain_loss_fn(label, f, S_mask) loss = self.pretrain_loss_fn(label, f, S_mask)
losses.append(loss.item()) losses.append(loss.item())
return np.mean(losses) return np.mean(losses)