PLUS会员

Bigmodels模型库

由qxiao创建,最终由qxiao 被浏览 567 用户

BigQuant AI Platform deep learning models(BigQuant AI量化平台深度学习模型库)。

介绍

bigmodels是什么?

bigmodels是BigQuant AI量化平台的深度学习模型库,集成了AI量化研究过程中常用的深度学习模型。

为什么需要bigmodels?

我们用PyTorch封装了AI量化研究中常用的深度学习模型,包含DNN、1DCNN、LSTM和Transformer等,并持续更新。

平台用户可以用简单的方式调用经过大量实践检验的AI能力,赋能AI量化投资。

import toch
import torch.nn as nn

from bigmodels.models import DNN

# 可视化模块进行因子挖掘和数据划分
x_train, y_train, x_val, y_val = train_test_split(....)

# 模型定义
model = DNN(feature_size=98)

# 模型编译
opt = torch.optim.Adam(model.parameters(), lr=1e-3)
loss = nn.MSELoss()
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
model.compile(optimizer=opt, loss=loss, device=device)

# 模型训练
model.fit(x_train, y_train, validation_data=(x_val, y_val), epochs=10, verbose=1)

# 模型预测
y_pred = model.predict(x_test)

一、快速入门

这里用DNN作为例子,介绍如何快速使用bigmodels加速量化模型的构建速度。

1.1 模型导入

这里从bigmodels库中导入DNN模型。

from bigmodels.models import DNN

model = DNN(feature_size=98)

1.2 模型编译

定义好模型之后我们需要通过编译(compile)来对学习过程进行配置,我们可以为模型的编译指定各类参数包括:

  • optimizer - 优化器
  • criterion - 损失函数
  • metrics - 评估函数
  • device: 是否调用GPU,默认调用CPU

example:

import torch
import torch.nn as nn

opt = torch.optim.Adam(model.parameters(), lr=1e-3)
loss = nn.MSELoss()
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

model.compile(optimizer=opt, loss=loss, device=device)

1.3 模型训练

调用fit方法,训练模型。参数有:

  • x: 训练集数据
  • y: 训练集标签
  • validation_data: 验证数据集
  • epochs: 训练的次数,默认10个epoch
  • batch_size: - 每一个批次训练的样本数
  • verbose: 是否输出训练过程的数据,0不输出,1输出
  • num_workers: 数据预处理的进程数,默认为0
  • callbacks: 回调函数
  • shuffle: 是否打乱数据集,默认打乱

example:

model.fit(x_train, y_train, validation_data=(x_val, y_val), batch_size=512, epochs=10, verbose=1, num_workers=0)

1.4 模型预测

predict方法预测。

参数有:

  • x: 预测数据
  • batch_size: 每一个批次预测的样本数,默认32

example:

model.predict(x_test, batch_size=32)

二、Models Zoo

  • [x] DNN
  • [ ] 1DCNN
  • [x] LSTM
  • [x] Transformer
  • [x] TabNet
  • [x] TRA

三、进阶

3.1 自定义模型

介绍如何快速的自定义自己的深度学习模型。

首先,bigmodels的所有模型都继承了BaseModel,BaseModel是pytorch的Module。

自定义模型只需要继承BaseModel,然后用torch的方式定义模型。

参考:https://pytorch.org/docs/stable/generated/torch.nn.Module.html#torch.nn.Module

from bigmodels.models import BaseModel

class CustomModel(BaseModel):
    def __init__(self, feature_size=98, output_size=1, hidden_size=[256, 128, 64], dropout=0.5):
        super(DNN, self).__init__()
        self.feature_size = feature_size

        self.linear_1 = nn.Linear(feature_size, hidden_size[0])
        self.relu_1 = nn.ReLU()
        
        modules = []
        last_size = hidden_size[0]
        for size in hidden_size:
            modules.append(nn.Linear(last_size, size))
            modules.append(nn.ReLU())
            modules.append(nn.Dropout(dropout))
            last_size = size

        self.hidden_layers = nn.Sequential(*modules)

        self.out = nn.Linear(last_size, output_size)

    def forward(self, x):
        x = self.linear_1(x)
        x = self.relu_1(x)

        x = self.hidden_layers(x)

        x = self.out(x)
        return x.squeeze()

# 测试
if __name__ == "__main__":
    model = CustomModel(300)

    x = torch.rand([32, 300])
    output = model(x)
    print(output.shape)

\

标签

深度学习量化投资神经网络金融数据投资策略

文档

Transformer使用文档
评论
  • 最好能贴个回测的例子
  • 本地pytorch环境 有BaseModel吗 \
{link}