如何获取神经网络模型各迭代轮次的weights与biases?
获取神经网络每一轮训练的权重与偏置
要保存训练过程中每个epoch的权重和偏置,最直接的方式是自定义Keras回调函数,在每轮训练结束后自动记录参数。
自定义回调类实现参数保存
import tensorflow as tf from tensorflow.keras.callbacks import Callback class SaveWeightsCallback(Callback): def __init__(self): super().__init__() # 初始化列表,用于存储每一轮的所有层参数 self.epoch_weights = [] def on_epoch_end(self, epoch, logs=None): # 遍历模型所有层,获取权重(weights[0])和偏置(weights[1]) layer_weights = [] for layer in self.model.layers: w, b = layer.get_weights() layer_weights.append({"weights": w, "biases": b}) # 将当前轮次的所有层参数存入列表 self.epoch_weights.append(layer_weights)
使用回调函数训练模型
训练时把自定义回调传入model.fit()的callbacks参数即可:
# 假设你已经定义好了model callback = SaveWeightsCallback() model.fit(x_train, y_train, epochs=5, callbacks=[callback])
访问各轮次的参数
训练完成后,通过回调实例的epoch_weights属性就能获取所有epoch的参数:
- 获取第0轮(第一轮)第0层的权重:
callback.epoch_weights[0][0]["weights"] - 获取第4轮(第五轮)第0层的偏置:
callback.epoch_weights[4][0]["biases"]
这样就能替代你原本只获取最后一轮参数的代码,实现全训练周期的参数留存。
内容的提问来源于stack exchange,提问作者pegah zahedi
相关产品推荐
相关产品推荐

