100.测试专用

【学院教程】深度学习的模型固化

由ypyu创建,最终由ypyu 被浏览 8 用户

导语

由于深度学习中牵扯到Dropout和随机种子等多处随机项,因此如果无法固化模型,当缓存丢失后会模拟交易/回测会触发重新训练,导致模型变化,本帖介绍固化已有的模型的步骤。

一、固化已有的模型的步骤

1. 调试策略

好的策略应该经过多次训练查看模型的回测效果稳定性,如果发现同样参数下多次训练模型得到的回测结果变动范围较大,多半是模型不稳定。模型稳定后可以考虑固化模型并开启模拟交易。

2. 记录模型文件到userlib文件夹

以上图DNN模型为例,首先查看最后一次满意的模型结果缓存id,如上图m5模块是训练出来的模型结果。

ds = m5.data

运行查看记录DataSourceid到变量ds_id中。 执行下面的代码,将模型文件保存在userlib文件夹下model.csv文件中。

pd.DataFrame([DataSource(ds.id).read()]).to_pickle('/home/bigquant/work/userlib/model.csv')

可以到编写策略界面下的userlib文件夹查看是否增加了model.csv文件。

3. 修改原始模版(修改前请备份)

参考上图,将原模型的深度学习训练模块相关模块删除,并新建一个自定义模块连接m11预测模块

自定义模块中添加如下代码:

# Python 代码入口函数,input_1/2/3 对应三个输入端,data_1/2/3 对应三个输出端
def bigquant_run(input_1, input_2, input_3):
    # 示例代码如下。在这里编写您的代码
    data = pd.read_pickle('/home/bigquant/work/userlib/model.csv')
    model_ds = DataSource.write_pickle(data.iloc[0].to_dict())
    return Outputs(data_1=model_ds)

即从文件中读取保存的model.csv文件到缓存中,并将模型传给预测模块

4. 回测验证并模拟交易

运行修改后的模版,如果能跑出结果说明模型固化完成,固化后点击模拟交易即可。

{link}