gpt4 book ai didi

python - 将 keras 模型权重直接保存到字节/内存?

转载 作者:行者123 更新时间:2023-12-03 23:48:53 28 4
gpt4 key购买 nike

Keras 允许保存整个模型或仅保存模型权重(请参阅 thread )。保存权重时,必须将它们保存到文件中,例如:

model = keras_model()
model.save_weights('/tmp/model.h5')

我不想写入文件,而是将字节保存到内存中。就像是
model.dump_weights()

Tensorflow 似乎没有这个,所以作为一种解决方法,我正在写入磁盘然后读入内存:
temp = '/tmp/weights.h5'
model.save_weights(temp)
with open(temp, 'rb') as f:
weightbytes = f.read()

有什么办法可以避免这个回旋处?

最佳答案

weights=model.get_weights() 将获得模型权重。 model.set_weights(weights) 将设置模型权重。问题之一是您何时保存模型权重。通常,您希望保存验证损失最低的时期的模型权重。
Keras 回调 ModelCheckpoint 会将验证损失最低的权重保存到文件中。我发现保存到文件很不方便,所以我编写了一个小的自定义回调,将验证损失最低的权重保存到类变量中,然后在训练完成后将这些权重加载到模型中以进行预测。代码如下所示。编译模型时,只需将 save_best_weights 添加到回调列表中。

class save_best_weights(tf.keras.callbacks.Callback):
best_weights=model.get_weights()
def __init__(self):
super(save_best_weights, self).__init__()
self.best = np.Inf
def on_epoch_end(self, epoch, logs=None):
current_loss = logs.get('val_loss')
accuracy=logs.get('val_accuracy')* 100
if np.less(current_loss, self.best):
self.best = current_loss
save_best_weights.best_weights=model.get_weights()
print('\nSaving weights validation loss= {0:6.4f} validation accuracy= {1:6.3f} %\n'.format(current_loss, accuracy))

关于python - 将 keras 模型权重直接保存到字节/内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60567679/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com