mirror of
https://github.com/microsoft/qlib.git
synced 2026-07-12 23:36:54 +08:00
Fix models.
This commit is contained in:
BIN
examples/benchmarks/GRU/csi300_gru_ts.pkl
Normal file
BIN
examples/benchmarks/GRU/csi300_gru_ts.pkl
Normal file
Binary file not shown.
@@ -56,7 +56,7 @@ task:
|
|||||||
hidden_size: 64
|
hidden_size: 64
|
||||||
num_layers: 2
|
num_layers: 2
|
||||||
dropout: 0.0
|
dropout: 0.0
|
||||||
n_epochs: 2
|
n_epochs: 200
|
||||||
lr: 1e-3
|
lr: 1e-3
|
||||||
early_stop: 10
|
early_stop: 10
|
||||||
batch_size: 800
|
batch_size: 800
|
||||||
|
|||||||
BIN
examples/benchmarks/LSTM/csi300_lstm_ts.pkl
Normal file
BIN
examples/benchmarks/LSTM/csi300_lstm_ts.pkl
Normal file
Binary file not shown.
@@ -164,8 +164,8 @@ class ALSTM(Model):
|
|||||||
self.ALSTM_model.train()
|
self.ALSTM_model.train()
|
||||||
|
|
||||||
for data in data_loader:
|
for data in data_loader:
|
||||||
feature = data[:,:,0:-1].to(self.device)
|
feature = data[:, :, 0:-1].to(self.device)
|
||||||
label = data[:,-1,-1].to(self.device)
|
label = data[:, -1, -1].to(self.device)
|
||||||
|
|
||||||
pred = self.ALSTM_model(feature.float())
|
pred = self.ALSTM_model(feature.float())
|
||||||
loss = self.loss_fn(pred, label)
|
loss = self.loss_fn(pred, label)
|
||||||
@@ -184,9 +184,9 @@ class ALSTM(Model):
|
|||||||
|
|
||||||
for data in data_loader:
|
for data in data_loader:
|
||||||
|
|
||||||
feature = data[:,:,0:-1].to(self.device)
|
feature = data[:, :, 0:-1].to(self.device)
|
||||||
# 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())
|
pred = self.ALSTM_model(feature.float())
|
||||||
loss = self.loss_fn(pred, label)
|
loss = self.loss_fn(pred, label)
|
||||||
@@ -203,12 +203,12 @@ class ALSTM(Model):
|
|||||||
evals_result=dict(),
|
evals_result=dict(),
|
||||||
verbose=True,
|
verbose=True,
|
||||||
save_path=None,
|
save_path=None,
|
||||||
):
|
):
|
||||||
dl_train = dataset.prepare("train", data_key=DataHandlerLP.DK_L)
|
dl_train = dataset.prepare("train", data_key=DataHandlerLP.DK_L)
|
||||||
dl_valid = dataset.prepare("valid", 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_train.config(fillna_type="ffill+bfill") # process nan brought by dataloader
|
||||||
dl_valid.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)
|
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)
|
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:
|
for data in test_loader:
|
||||||
|
|
||||||
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:
|
if self.use_gpu:
|
||||||
|
|||||||
@@ -183,8 +183,8 @@ class GATs(Model):
|
|||||||
self.ALSTM_model.train()
|
self.ALSTM_model.train()
|
||||||
|
|
||||||
for data in data_loader:
|
for data in data_loader:
|
||||||
feature = data[:,:,0:-1].to(self.device)
|
feature = data[:, :, 0:-1].to(self.device)
|
||||||
label = data[:,-1,-1].to(self.device)
|
label = data[:, -1, -1].to(self.device)
|
||||||
|
|
||||||
pred = self.ALSTM_model(feature.float())
|
pred = self.ALSTM_model(feature.float())
|
||||||
loss = self.loss_fn(pred, label)
|
loss = self.loss_fn(pred, label)
|
||||||
@@ -203,9 +203,9 @@ class GATs(Model):
|
|||||||
|
|
||||||
for data in data_loader:
|
for data in data_loader:
|
||||||
|
|
||||||
feature = data[:,:,0:-1].to(self.device)
|
feature = data[:, :, 0:-1].to(self.device)
|
||||||
# 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())
|
pred = self.ALSTM_model(feature.float())
|
||||||
loss = self.loss_fn(pred, label)
|
loss = self.loss_fn(pred, label)
|
||||||
@@ -227,8 +227,8 @@ class GATs(Model):
|
|||||||
dl_train = dataset.prepare("train", data_key=DataHandlerLP.DK_L)
|
dl_train = dataset.prepare("train", data_key=DataHandlerLP.DK_L)
|
||||||
dl_valid = dataset.prepare("valid", 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_train.config(fillna_type="ffill+bfill") # process nan brought by dataloader
|
||||||
dl_valid.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)
|
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)
|
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:
|
for data in test_loader:
|
||||||
|
|
||||||
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:
|
if self.use_gpu:
|
||||||
|
|||||||
@@ -164,8 +164,8 @@ class GRU(Model):
|
|||||||
self.GRU_model.train()
|
self.GRU_model.train()
|
||||||
|
|
||||||
for data in data_loader:
|
for data in data_loader:
|
||||||
feature = data[:,:,0:-1].to(self.device)
|
feature = data[:, :, 0:-1].to(self.device)
|
||||||
label = data[:,-1,-1].to(self.device)
|
label = data[:, -1, -1].to(self.device)
|
||||||
|
|
||||||
pred = self.GRU_model(feature.float())
|
pred = self.GRU_model(feature.float())
|
||||||
loss = self.loss_fn(pred, label)
|
loss = self.loss_fn(pred, label)
|
||||||
@@ -184,9 +184,9 @@ class GRU(Model):
|
|||||||
|
|
||||||
for data in data_loader:
|
for data in data_loader:
|
||||||
|
|
||||||
feature = data[:,:,0:-1].to(self.device)
|
feature = data[:, :, 0:-1].to(self.device)
|
||||||
# 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())
|
pred = self.GRU_model(feature.float())
|
||||||
loss = self.loss_fn(pred, label)
|
loss = self.loss_fn(pred, label)
|
||||||
@@ -203,12 +203,12 @@ class GRU(Model):
|
|||||||
evals_result=dict(),
|
evals_result=dict(),
|
||||||
verbose=True,
|
verbose=True,
|
||||||
save_path=None,
|
save_path=None,
|
||||||
):
|
):
|
||||||
dl_train = dataset.prepare("train", data_key=DataHandlerLP.DK_L)
|
dl_train = dataset.prepare("train", data_key=DataHandlerLP.DK_L)
|
||||||
dl_valid = dataset.prepare("valid", 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_train.config(fillna_type="ffill+bfill") # process nan brought by dataloader
|
||||||
dl_valid.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)
|
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)
|
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.logger.info("best score: %.6lf @ %d" % (best_score, best_epoch))
|
||||||
self.GRU_model.load_state_dict(best_param)
|
self.GRU_model.load_state_dict(best_param)
|
||||||
# torch.save(best_param, save_path)
|
torch.save(best_param, save_path)
|
||||||
torch.save(best_param, '/home/lewwang/qlib/examples/benchmarks/GRU/csi300_gru_ts.pkl')
|
|
||||||
|
|
||||||
if self.use_gpu:
|
if self.use_gpu:
|
||||||
torch.cuda.empty_cache()
|
torch.cuda.empty_cache()
|
||||||
@@ -269,7 +268,7 @@ class GRU(Model):
|
|||||||
|
|
||||||
for data in test_loader:
|
for data in test_loader:
|
||||||
|
|
||||||
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:
|
if self.use_gpu:
|
||||||
|
|||||||
@@ -164,8 +164,8 @@ class LSTM(Model):
|
|||||||
self.LSTM_model.train()
|
self.LSTM_model.train()
|
||||||
|
|
||||||
for data in data_loader:
|
for data in data_loader:
|
||||||
feature = data[:,:,0:-1].to(self.device)
|
feature = data[:, :, 0:-1].to(self.device)
|
||||||
label = data[:,-1,-1].to(self.device)
|
label = data[:, -1, -1].to(self.device)
|
||||||
|
|
||||||
pred = self.LSTM_model(feature.float())
|
pred = self.LSTM_model(feature.float())
|
||||||
loss = self.loss_fn(pred, label)
|
loss = self.loss_fn(pred, label)
|
||||||
@@ -184,9 +184,9 @@ class LSTM(Model):
|
|||||||
|
|
||||||
for data in data_loader:
|
for data in data_loader:
|
||||||
|
|
||||||
feature = data[:,:,0:-1].to(self.device)
|
feature = data[:, :, 0:-1].to(self.device)
|
||||||
# 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.LSTM_model(feature.float())
|
pred = self.LSTM_model(feature.float())
|
||||||
loss = self.loss_fn(pred, label)
|
loss = self.loss_fn(pred, label)
|
||||||
@@ -203,12 +203,12 @@ class LSTM(Model):
|
|||||||
evals_result=dict(),
|
evals_result=dict(),
|
||||||
verbose=True,
|
verbose=True,
|
||||||
save_path=None,
|
save_path=None,
|
||||||
):
|
):
|
||||||
dl_train = dataset.prepare("train", data_key=DataHandlerLP.DK_L)
|
dl_train = dataset.prepare("train", data_key=DataHandlerLP.DK_L)
|
||||||
dl_valid = dataset.prepare("valid", 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_train.config(fillna_type="ffill+bfill") # process nan brought by dataloader
|
||||||
dl_valid.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)
|
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)
|
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.logger.info("best score: %.6lf @ %d" % (best_score, best_epoch))
|
||||||
self.LSTM_model.load_state_dict(best_param)
|
self.LSTM_model.load_state_dict(best_param)
|
||||||
# torch.save(best_param, save_path)
|
torch.save(best_param, save_path)
|
||||||
torch.save(best_param, '/home/lewwang/qlib/examples/benchmarks/LSTM/csi300_lstm_ts.pkl')
|
|
||||||
|
|
||||||
|
|
||||||
if self.use_gpu:
|
if self.use_gpu:
|
||||||
torch.cuda.empty_cache()
|
torch.cuda.empty_cache()
|
||||||
@@ -270,7 +268,7 @@ class LSTM(Model):
|
|||||||
|
|
||||||
for data in test_loader:
|
for data in test_loader:
|
||||||
|
|
||||||
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:
|
if self.use_gpu:
|
||||||
@@ -300,4 +298,4 @@ class LSTMModel(nn.Module):
|
|||||||
|
|
||||||
def forward(self, x):
|
def forward(self, x):
|
||||||
out, _ = self.rnn(x)
|
out, _ = self.rnn(x)
|
||||||
return self.fc_out(out[:, -1, :]).squeeze()
|
return self.fc_out(out[:, -1, :]).squeeze()
|
||||||
|
|||||||
@@ -164,8 +164,8 @@ class SFM(Model):
|
|||||||
self.SFM_model.train()
|
self.SFM_model.train()
|
||||||
|
|
||||||
for data in data_loader:
|
for data in data_loader:
|
||||||
feature = data[:,:,0:-1].to(self.device)
|
feature = data[:, :, 0:-1].to(self.device)
|
||||||
label = data[:,-1,-1].to(self.device)
|
label = data[:, -1, -1].to(self.device)
|
||||||
|
|
||||||
pred = self.SFM_model(feature.float())
|
pred = self.SFM_model(feature.float())
|
||||||
loss = self.loss_fn(pred, label)
|
loss = self.loss_fn(pred, label)
|
||||||
@@ -184,9 +184,9 @@ class SFM(Model):
|
|||||||
|
|
||||||
for data in data_loader:
|
for data in data_loader:
|
||||||
|
|
||||||
feature = data[:,:,0:-1].to(self.device)
|
feature = data[:, :, 0:-1].to(self.device)
|
||||||
# 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.SFM_model(feature.float())
|
pred = self.SFM_model(feature.float())
|
||||||
loss = self.loss_fn(pred, label)
|
loss = self.loss_fn(pred, label)
|
||||||
@@ -203,12 +203,12 @@ class SFM(Model):
|
|||||||
evals_result=dict(),
|
evals_result=dict(),
|
||||||
verbose=True,
|
verbose=True,
|
||||||
save_path=None,
|
save_path=None,
|
||||||
):
|
):
|
||||||
dl_train = dataset.prepare("train", data_key=DataHandlerLP.DK_L)
|
dl_train = dataset.prepare("train", data_key=DataHandlerLP.DK_L)
|
||||||
dl_valid = dataset.prepare("valid", 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_train.config(fillna_type="ffill+bfill") # process nan brought by dataloader
|
||||||
dl_valid.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)
|
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)
|
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:
|
for data in test_loader:
|
||||||
|
|
||||||
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:
|
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)])
|
array = np.array([float(ii) / self.freq_dim for ii in range(self.freq_dim)])
|
||||||
constants.append(torch.tensor(array).to(self.device))
|
constants.append(torch.tensor(array).to(self.device))
|
||||||
|
|
||||||
self.states[5:] = constants
|
self.states[5:] = constants
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ class SignalRecord(RecordTemp):
|
|||||||
if not isinstance(raw_label, pd.DataFrame):
|
if not isinstance(raw_label, pd.DataFrame):
|
||||||
index = raw_label.get_index()
|
index = raw_label.get_index()
|
||||||
raw_label = raw_label.data.loc[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})
|
self.recorder.save_objects(**{"label.pkl": raw_label})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user