深度学习的模型固化
由clearyf创建,最终由clearyf 被浏览 377 用户
导语
由于深度学习中牵扯到Dropout和随机种子等多处随机项,因此如果无法固化模型,当缓存丢失后会模拟交易/回测会触发重新训练,导致模型变化,本帖介绍固化已有的模型的步骤。
如何固化模型
调试策略
第一步,调试策略
好的策略应该经过多次训练查看模型的回测效果稳定性,如果发现同样参数下多次训练模型得到的回测结果变动范围较大,多半是模型不稳定。模型稳定后可以考虑固化模型并开启模拟交易。
记录模型文件
第二步,记录模型文件到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文件。
修改原始模板
第三步,修改原始模版(修改前请备份)
参考上图,将原模型的深度学习训练模块相关模块删除,并新建一个自定义模块连接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文件到缓存中,并将模型传给预测模块
回测验证并模拟交易
第四步,进行回测验证并模拟交易
运行修改后的模版,如果能跑出结果说明模型固化完成,固化后点击模拟交易即可。