我有一个Keras神经网络模型,该模型会定期更新。为了实现历史可追溯性,我想在数据库中保留每个受过训练的模型(体系结构+权重+优化器状态)的副本。 "Multi-class AdaBoost"包含有关模型的所有信息。有没有一种方法可以将该文件转换为可以存储在SQL数据库记录中的格式,以使完整的模型可以在以后检索/使用,即使检索速度不是很快。
我正在使用Python3构建/训练模型并与SQL数据库进行交互。另外,如果这有区别,我正在使用MS SQL Server作为数据库。
根据评论,我要保存HDF5文件,然后像这样将其读回Python:
filepath = 'C:\\path\\to\\file.h5'
model.save(filepath)
with open(filepath, "rb") as f:
model_bytes = f.read()
当我尝试将INSERT
的值model_bytes
放入MSSQL的VARBINARY(MAX)
列时,出现以下错误:
pypyodbc.DataError :(“ 22018”,“ [22018] [Microsoft] [ODBC SQL Server 驱动程序] [SQL Server]操作数冲突:ntext与 varbinary(max)')
关于如何预处理Python中的字节数据类型以便将其正确插入SQL的任何想法?
当我打印model_bytes
进行屏幕显示时,它看起来像这样:
b'\ x89HDF \ r \ n \ x1a \ n \ x00 \ x00 \ x00 \ x00 \ x00 \ x08 \ x08 \ x00 \ x04 \ x00 \ x10 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ xff \ xff \ xff \ xff \ xff \ xff \ xff \ xff @ \ x13 \ x01 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ xff \ xff \ xff \ xff \ xff \ xff \ xff \ xff \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00` \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x01 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x88 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ xa8 \ x02 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x01 \ x00 \ x08 \ x00 \ x00 \ x00 \ x01 \ x00 \ x00 \ x00 \ x18 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x10 \ x00 \ x10 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x03 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x18 \ x01 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00TREE \ x00 \ x00 \ x01 \ x00 \ xff \ xff \ xff \ xff \ xff \ xff \ xff \ xff \ xff \ xff \ xff \ xff \ xff \ xff \ xff \ xff \ xff \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x18 \ x18 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x18 \ x18 \ x00 \ x00 ... >
答案 0 :(得分:0)
我找不到一种干净的方法来做到这一点。我解决问题的方法是将文件名/路径以及有关模型的一些元数据存储在数据库中。我将实际模型(HDF5文件)存储在Google Cloud Storage中。因此,当我想检索模型时,我查询数据库以获取最新的文件名,然后从Google Cloud Storage下载它。