diff --git a/examples/benchmarks/GRU/csi300_gru_ts.pkl b/examples/benchmarks/GRU/csi300_gru_ts.pkl new file mode 100644 index 000000000..8ebcf9d2b Binary files /dev/null and b/examples/benchmarks/GRU/csi300_gru_ts.pkl differ diff --git a/examples/benchmarks/GRU/workflow_config_gru_Alpha158.yaml b/examples/benchmarks/GRU/workflow_config_gru_Alpha158.yaml index 61567e5fc..b52ed4160 100755 --- a/examples/benchmarks/GRU/workflow_config_gru_Alpha158.yaml +++ b/examples/benchmarks/GRU/workflow_config_gru_Alpha158.yaml @@ -56,7 +56,7 @@ task: hidden_size: 64 num_layers: 2 dropout: 0.0 - n_epochs: 2 + n_epochs: 200 lr: 1e-3 early_stop: 10 batch_size: 800 diff --git a/examples/benchmarks/LSTM/csi300_lstm_ts.pkl b/examples/benchmarks/LSTM/csi300_lstm_ts.pkl new file mode 100644 index 000000000..ba871c83d Binary files /dev/null and b/examples/benchmarks/LSTM/csi300_lstm_ts.pkl differ diff --git a/qlib/contrib/model/pytorch_alstm_ts.py b/qlib/contrib/model/pytorch_alstm_ts.py index 411a60967..4cbd8a49e 100644 --- a/qlib/contrib/model/pytorch_alstm_ts.py +++ b/qlib/contrib/model/pytorch_alstm_ts.py @@ -164,8 +164,8 @@ class ALSTM(Model): self.ALSTM_model.train() for data in data_loader: - feature = data[:,:,0:-1].to(self.device) - label = data[:,-1,-1].to(self.device) + feature = data[:, :, 0:-1].to(self.device) + label = data[:, -1, -1].to(self.device) pred = self.ALSTM_model(feature.float()) loss = self.loss_fn(pred, label) @@ -184,9 +184,9 @@ class ALSTM(Model): for data in data_loader: - feature = data[:,:,0:-1].to(self.device) + feature = data[:, :, 0:-1].to(self.device) # 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()) loss = self.loss_fn(pred, label) @@ -203,12 +203,12 @@ class ALSTM(Model): evals_result=dict(), verbose=True, save_path=None, - ): + ): dl_train = dataset.prepare("train", data_key=DataHandlerLP.DK_L) dl_valid = dataset.prepare("valid", data_key=DataHandlerLP.DK_L) - dl_train.config(fillna_type="ffill+bfill") # process nan brought by dataloader - dl_valid.config(fillna_type="ffill+bfill") # process nan brought by dataloader + dl_train.config(fillna_type="ffill+bfill") # process nan brought by dataloader + dl_valid.config(fillna_type="ffill+bfill") # process nan brought by dataloader train_loader = DataLoader(dl_train, batch_size=self.batch_size, shuffle=True, num_workers=self.n_jobs) valid_loader = DataLoader(dl_valid, batch_size=self.batch_size, shuffle=False, num_workers=self.n_jobs) @@ -268,7 +268,7 @@ class ALSTM(Model): for data in test_loader: - feature = data[:,:,0:-1].to(self.device) + feature = data[:, :, 0:-1].to(self.device) with torch.no_grad(): if self.use_gpu: diff --git a/qlib/contrib/model/pytorch_gats_ts.py b/qlib/contrib/model/pytorch_gats_ts.py index a2ff154de..4f22bb344 100644 --- a/qlib/contrib/model/pytorch_gats_ts.py +++ b/qlib/contrib/model/pytorch_gats_ts.py @@ -183,8 +183,8 @@ class GATs(Model): self.ALSTM_model.train() for data in data_loader: - feature = data[:,:,0:-1].to(self.device) - label = data[:,-1,-1].to(self.device) + feature = data[:, :, 0:-1].to(self.device) + label = data[:, -1, -1].to(self.device) pred = self.ALSTM_model(feature.float()) loss = self.loss_fn(pred, label) @@ -203,9 +203,9 @@ class GATs(Model): for data in data_loader: - feature = data[:,:,0:-1].to(self.device) + feature = data[:, :, 0:-1].to(self.device) # 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()) loss = self.loss_fn(pred, label) @@ -227,8 +227,8 @@ class GATs(Model): dl_train = dataset.prepare("train", data_key=DataHandlerLP.DK_L) dl_valid = dataset.prepare("valid", data_key=DataHandlerLP.DK_L) - dl_train.config(fillna_type="ffill+bfill") # process nan brought by dataloader - dl_valid.config(fillna_type="ffill+bfill") # process nan brought by dataloader + dl_train.config(fillna_type="ffill+bfill") # process nan brought by dataloader + dl_valid.config(fillna_type="ffill+bfill") # process nan brought by dataloader train_loader = DataLoader(dl_train, batch_size=self.batch_size, shuffle=True, num_workers=self.n_jobs) valid_loader = DataLoader(dl_valid, batch_size=self.batch_size, shuffle=False, num_workers=self.n_jobs) @@ -308,7 +308,7 @@ class GATs(Model): for data in test_loader: - feature = data[:,:,0:-1].to(self.device) + feature = data[:, :, 0:-1].to(self.device) with torch.no_grad(): if self.use_gpu: diff --git a/qlib/contrib/model/pytorch_gru_ts.py b/qlib/contrib/model/pytorch_gru_ts.py index 217aea0ae..b1c943a89 100755 --- a/qlib/contrib/model/pytorch_gru_ts.py +++ b/qlib/contrib/model/pytorch_gru_ts.py @@ -164,8 +164,8 @@ class GRU(Model): self.GRU_model.train() for data in data_loader: - feature = data[:,:,0:-1].to(self.device) - label = data[:,-1,-1].to(self.device) + feature = data[:, :, 0:-1].to(self.device) + label = data[:, -1, -1].to(self.device) pred = self.GRU_model(feature.float()) loss = self.loss_fn(pred, label) @@ -184,9 +184,9 @@ class GRU(Model): for data in data_loader: - feature = data[:,:,0:-1].to(self.device) + feature = data[:, :, 0:-1].to(self.device) # 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()) loss = self.loss_fn(pred, label) @@ -203,12 +203,12 @@ class GRU(Model): evals_result=dict(), verbose=True, save_path=None, - ): + ): dl_train = dataset.prepare("train", data_key=DataHandlerLP.DK_L) dl_valid = dataset.prepare("valid", data_key=DataHandlerLP.DK_L) - dl_train.config(fillna_type="ffill+bfill") # process nan brought by dataloader - dl_valid.config(fillna_type="ffill+bfill") # process nan brought by dataloader + dl_train.config(fillna_type="ffill+bfill") # process nan brought by dataloader + dl_valid.config(fillna_type="ffill+bfill") # process nan brought by dataloader train_loader = DataLoader(dl_train, batch_size=self.batch_size, shuffle=True, num_workers=self.n_jobs) valid_loader = DataLoader(dl_valid, batch_size=self.batch_size, shuffle=False, num_workers=self.n_jobs) @@ -251,8 +251,7 @@ class GRU(Model): self.logger.info("best score: %.6lf @ %d" % (best_score, best_epoch)) self.GRU_model.load_state_dict(best_param) - # torch.save(best_param, save_path) - torch.save(best_param, '/home/lewwang/qlib/examples/benchmarks/GRU/csi300_gru_ts.pkl') + torch.save(best_param, save_path) if self.use_gpu: torch.cuda.empty_cache() @@ -269,7 +268,7 @@ class GRU(Model): for data in test_loader: - feature = data[:,:,0:-1].to(self.device) + feature = data[:, :, 0:-1].to(self.device) with torch.no_grad(): if self.use_gpu: diff --git a/qlib/contrib/model/pytorch_lstm_ts.py b/qlib/contrib/model/pytorch_lstm_ts.py index 676850fb2..c717d3955 100755 --- a/qlib/contrib/model/pytorch_lstm_ts.py +++ b/qlib/contrib/model/pytorch_lstm_ts.py @@ -164,8 +164,8 @@ class LSTM(Model): self.LSTM_model.train() for data in data_loader: - feature = data[:,:,0:-1].to(self.device) - label = data[:,-1,-1].to(self.device) + feature = data[:, :, 0:-1].to(self.device) + label = data[:, -1, -1].to(self.device) pred = self.LSTM_model(feature.float()) loss = self.loss_fn(pred, label) @@ -184,9 +184,9 @@ class LSTM(Model): for data in data_loader: - feature = data[:,:,0:-1].to(self.device) + feature = data[:, :, 0:-1].to(self.device) # feature[torch.isnan(feature)] = 0 - label = data[:,-1,-1].to(self.device) + label = data[:, -1, -1].to(self.device) pred = self.LSTM_model(feature.float()) loss = self.loss_fn(pred, label) @@ -203,12 +203,12 @@ class LSTM(Model): evals_result=dict(), verbose=True, save_path=None, - ): + ): dl_train = dataset.prepare("train", data_key=DataHandlerLP.DK_L) dl_valid = dataset.prepare("valid", data_key=DataHandlerLP.DK_L) - dl_train.config(fillna_type="ffill+bfill") # process nan brought by dataloader - dl_valid.config(fillna_type="ffill+bfill") # process nan brought by dataloader + dl_train.config(fillna_type="ffill+bfill") # process nan brought by dataloader + dl_valid.config(fillna_type="ffill+bfill") # process nan brought by dataloader train_loader = DataLoader(dl_train, batch_size=self.batch_size, shuffle=True, num_workers=self.n_jobs) valid_loader = DataLoader(dl_valid, batch_size=self.batch_size, shuffle=False, num_workers=self.n_jobs) @@ -251,9 +251,7 @@ class LSTM(Model): self.logger.info("best score: %.6lf @ %d" % (best_score, best_epoch)) self.LSTM_model.load_state_dict(best_param) - # torch.save(best_param, save_path) - torch.save(best_param, '/home/lewwang/qlib/examples/benchmarks/LSTM/csi300_lstm_ts.pkl') - + torch.save(best_param, save_path) if self.use_gpu: torch.cuda.empty_cache() @@ -270,7 +268,7 @@ class LSTM(Model): for data in test_loader: - feature = data[:,:,0:-1].to(self.device) + feature = data[:, :, 0:-1].to(self.device) with torch.no_grad(): if self.use_gpu: @@ -300,4 +298,4 @@ class LSTMModel(nn.Module): def forward(self, x): out, _ = self.rnn(x) - return self.fc_out(out[:, -1, :]).squeeze() \ No newline at end of file + return self.fc_out(out[:, -1, :]).squeeze() diff --git a/qlib/contrib/model/pytorch_sfm_ts.py b/qlib/contrib/model/pytorch_sfm_ts.py index fcf5a0f75..e375e1c8d 100644 --- a/qlib/contrib/model/pytorch_sfm_ts.py +++ b/qlib/contrib/model/pytorch_sfm_ts.py @@ -164,8 +164,8 @@ class SFM(Model): self.SFM_model.train() for data in data_loader: - feature = data[:,:,0:-1].to(self.device) - label = data[:,-1,-1].to(self.device) + feature = data[:, :, 0:-1].to(self.device) + label = data[:, -1, -1].to(self.device) pred = self.SFM_model(feature.float()) loss = self.loss_fn(pred, label) @@ -184,9 +184,9 @@ class SFM(Model): for data in data_loader: - feature = data[:,:,0:-1].to(self.device) + feature = data[:, :, 0:-1].to(self.device) # feature[torch.isnan(feature)] = 0 - label = data[:,-1,-1].to(self.device) + label = data[:, -1, -1].to(self.device) pred = self.SFM_model(feature.float()) loss = self.loss_fn(pred, label) @@ -203,12 +203,12 @@ class SFM(Model): evals_result=dict(), verbose=True, save_path=None, - ): + ): dl_train = dataset.prepare("train", data_key=DataHandlerLP.DK_L) dl_valid = dataset.prepare("valid", data_key=DataHandlerLP.DK_L) - dl_train.config(fillna_type="ffill+bfill") # process nan brought by dataloader - dl_valid.config(fillna_type="ffill+bfill") # process nan brought by dataloader + dl_train.config(fillna_type="ffill+bfill") # process nan brought by dataloader + dl_valid.config(fillna_type="ffill+bfill") # process nan brought by dataloader train_loader = DataLoader(dl_train, batch_size=self.batch_size, shuffle=True, num_workers=self.n_jobs) valid_loader = DataLoader(dl_valid, batch_size=self.batch_size, shuffle=False, num_workers=self.n_jobs) @@ -268,7 +268,7 @@ class SFM(Model): for data in test_loader: - feature = data[:,:,0:-1].to(self.device) + feature = data[:, :, 0:-1].to(self.device) with torch.no_grad(): if self.use_gpu: @@ -431,4 +431,4 @@ class SFM_Model(nn.Module): array = np.array([float(ii) / self.freq_dim for ii in range(self.freq_dim)]) constants.append(torch.tensor(array).to(self.device)) - self.states[5:] = constants \ No newline at end of file + self.states[5:] = constants diff --git a/qlib/workflow/record_temp.py b/qlib/workflow/record_temp.py index 3b8114f80..1cbd4bcab 100644 --- a/qlib/workflow/record_temp.py +++ b/qlib/workflow/record_temp.py @@ -145,7 +145,7 @@ class SignalRecord(RecordTemp): if not isinstance(raw_label, pd.DataFrame): index = raw_label.get_index() raw_label = raw_label.data.loc[index] - raw_label = raw_label.iloc[:,-1:] + raw_label = raw_label.iloc[:, -1:] self.recorder.save_objects(**{"label.pkl": raw_label})