我创建了一个keras模型(tensorflow),想将其存储在我的MS SQL Server数据库中。有什么最好的方法可以做到这一点吗?pyodbc.Binary(model)会抛出错误。我希望找到一种不需要先将模型存储在文件系统中的方法。
谢谢任何帮助。
谢谢任何帮助。
似乎没有一种干净的解决方案能够直接将包含权重的模型存储到数据库中。我决定将模型作为h5文件存储在文件系统中,并从那里将其上传到数据库作为备份。对于预测,我始终从文件系统中加载模型,因为相比于每次从数据库获取模型,这样做速度更快。
model = torch.load(r'model.pth')
buffer = io.BytesIO()
torch.save(model, buffer)
model_data = buffer.getvalue()
connection_string = 'DRIVER={SQL Server};Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;Trusted_Connection=False'
connection = pyodbc.connect(connection_string)
cursor = connection.cursor()
query="INSERT INTO Models (Model) VALUES (?)"
cursor.execute("SET IDENTITY_INSERT Models ON")
cursor.execute(query, model_data)
cursor.execute("SET IDENTITY_INSERT Models OFF")
connection.commit()
#to get the model from the db:
query="SELECT Model FROM Models"
cursor.execute(query)
row = cursor.fetchone()
model_data = row.Model
buffer = io.BytesIO(model_data)
loaded_model = torch.load(buffer)
cursor.close()
connection.close()