1
0
mirror of https://github.com/microsoft/qlib.git synced 2026-07-04 19:41:00 +08:00

Update pytorch_localformer.py

Have passed black.
This commit is contained in:
Ying-Tao Luo
2021-07-14 15:49:17 +08:00
committed by you-n-g
parent 7b20abeda1
commit dd0eebed53

View File

@@ -24,32 +24,6 @@ from ...data.dataset import DatasetH, TSDatasetH
from ...data.dataset.handler import DataHandlerLP
from torch.nn.modules.container import ModuleList
import pdb
# qrun benchmarks/Transformer/workflow_config_localformer_Alpha158.yaml
# 0.992366, @13,
'''
{'IC': 0.037426503365732174,
'ICIR': 0.28977883455541603,
'Rank IC': 0.04659889541774283,
'Rank ICIR': 0.373569340092482}
'The following are analysis results of the excess return without cost.'
risk
mean 0.000381
std 0.004109
annualized_return 0.096066
information_ratio 1.472729
max_drawdown -0.094917
'The following are analysis results of the excess return with cost.'
risk
mean 0.000213
std 0.004111
annualized_return 0.053630
information_ratio 0.821711
max_drawdown -0.113694
'''
class LocalformerModel(Model):
def __init__(
@@ -88,11 +62,8 @@ class LocalformerModel(Model):
self.device = torch.device("cuda:%d" % GPU if torch.cuda.is_available() and GPU >= 0 else "cpu")
self.seed = seed
self.logger = get_module_logger("TransformerModel")
print('do we have gpu?{}'.format(torch.cuda.is_available()))
self.logger.info(
"Improved Transformer:"
"\nbatch_size : {}"
"\ndevice : {}".format(self.batch_size, self.device)
"Improved Transformer:" "\nbatch_size : {}" "\ndevice : {}".format(self.batch_size, self.device)
)
if self.seed is not None:
@@ -161,7 +132,6 @@ class LocalformerModel(Model):
for data in data_loader:
feature = data[:, :, 0:-1].to(self.device)
# feature[torch.isnan(feature)] = 0
label = data[:, -1, -1].to(self.device)
with torch.no_grad():
@@ -266,11 +236,11 @@ class PositionalEncoding(nn.Module):
pe[:, 0::2] = torch.sin(position * div_term)
pe[:, 1::2] = torch.cos(position * div_term)
pe = pe.unsqueeze(0).transpose(0, 1)
self.register_buffer('pe', pe)
self.register_buffer("pe", pe)
def forward(self, x):
# [T, N, F]
return x + self.pe[:x.size(0), :]
return x + self.pe[: x.size(0), :]
def _get_clones(module, N):
@@ -278,7 +248,7 @@ def _get_clones(module, N):
class LocalformerEncoder(nn.Module):
__constants__ = ['norm']
__constants__ = ["norm"]
def __init__(self, encoder_layer, num_layers, d_model):
super(LocalformerEncoder, self).__init__()
@@ -295,7 +265,7 @@ class LocalformerEncoder(nn.Module):
out = output.transpose(1, 0).transpose(2, 1)
out = self.conv[i](out).transpose(2, 1).transpose(1, 0)
output = mod(output+out, src_mask=mask)
output = mod(output + out, src_mask=mask)
return output + out
@@ -319,9 +289,7 @@ class Transformer(nn.Module):
self.d_feat = d_feat
def forward(self, src):
# pdb.set_trace()
# src [N, T, F], [512, 60, 6]
src = self.feature_layer(src) # [512, 60, 8]
# src [N, T, F] --> [T, N, F], [60, 512, 8]
@@ -338,4 +306,3 @@ class Transformer(nn.Module):
output = self.decoder_layer(output.transpose(1, 0)[:, -1, :]) # [512, 1]
return output.squeeze()