将 Keras 模型 HDF5 文件存储到 SQL 数据库

Storing Keras model HDF5 file to SQL database

我有一个定期更新的 Keras 神经网络模型。对于历史可追溯性,我想在数据库中保留每个训练模型(架构+权重+优化器状态)的副本。 Keras will export an HDF5 file 包含有关模型的所有信息。有没有办法将这个文件转换成可以存储在 SQL 数据库记录中的格式,这样完整的模型可以在 retrieved/used 之后,即使检索速度不是很快?

我正在使用 Python3 来 build/train 模型并与 SQL 数据库交互。另外,如果有区别的话,我正在使用 MS SQL 服务器作为数据库。

更新:

根据评论,我正在保存 HDF5 文件,然后将该文件读回 Python,如下所示:

filepath = 'C:\path\to\file.h5'
model.save(filepath)
with open(filepath, "rb") as f:
    model_bytes = f.read()

当我尝试将 INSERT model_bytes 值放入 M​​SSQL 中的 VARBINARY(MAX) 列时,出现以下错误:

pypyodbc.DataError: ('22018', '[22018] [Microsoft][ODBC SQL Server Driver][SQL Server]Operand type clash: ntext is incompatible with 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\xff\xff\xff\xff\xff\xff\xff\xff@\x13\x01\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\x01\x00\x00\x00\x00\x00\x00\x00\x88\x00\x00\x00\x00\x00\x00\x00\xa8\x02\x00\x00\x00\x00\x00\x00\x01\x00\x08\x00\x01\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x10\x00\x10\x00\x00\x00\x00\x00\x03\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x18\x00\x00...

我找不到一个干净的方法来做到这一点。我解决它的方法是将文件 name/path 与一些关于模型的元数据一起存储在数据库中。我将实际模型(HDF5 文件)存储在 Google 云存储中。所以当我想检索模型时,我查询数据库以获取最新的文件名,然后我从 Google Cloud Storage 下载它。