You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

保存神经网络已训练权重用于其他数据集训练的TensorFlow实现问题

TensorFlow 1.x/2.x 实现预训练权重复用的方案

这个需求在两个版本下都有官方成熟实现,无需自定义复杂逻辑,具体操作如下:

TensorFlow 1.x 实现方式

步骤1:训练阶段保存最优权重

你可以直接用tf.train.Saver结合验证集指标判断触发保存,也可以用TF1.x兼容的Keras回调简化操作:

  • 原生会话模式示例:
# 定义MLP架构、损失、优化器等逻辑
saver = tf.train.Saver()
best_val_acc = 0.0

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    for epoch in range(epochs):
        # 训练步骤省略
        # 跑验证集获取准确率val_acc
        if val_acc > best_val_acc:
            best_val_acc = val_acc
            saver.save(sess, "./ckpt/best_mlp.ckpt") # 保存最优权重

步骤2:加载权重作为新任务初始化

定义和训练时完全一致的MLP架构(变量名必须完全匹配),直接恢复权重即可:

# 定义和预训练阶段完全相同的MLP架构
saver = tf.train.Saver()

with tf.Session() as sess:
    saver.restore(sess, "./ckpt/best_mlp.ckpt") # 直接加载预训练权重,无需执行全局变量初始化
    # 接下来直接在新数据集上训练即可,需要冻层的话给对应变量设置trainable=False即可

TensorFlow 2.x 实现方式

2.x版本基于Keras高阶API实现更简单:

步骤1:训练阶段保存最优权重

直接用ModelCheckpoint回调自动保存验证集最优权重:

import tensorflow as tf

# 定义MLP模型
model = tf.keras.models.Sequential([
    # 这里填和你预训练一致的层结构,示例省略
])
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

# 配置最优权重保存回调
checkpoint_cb = tf.keras.callbacks.ModelCheckpoint(
    filepath="./best_mlp_weights.h5",
    monitor="val_accuracy",
    save_best_only=True,
    save_weights_only=True,
    verbose=1
)

# 训练时传入回调即可自动保存最优权重
model.fit(x_mnist, y_mnist, validation_split=0.1, epochs=20, callbacks=[checkpoint_cb])

步骤2:加载权重初始化新任务

定义同架构的模型后直接加载权重即可:

# 定义和预训练完全相同的MLP架构
new_model = tf.keras.models.Sequential([
    # 和预训练模型的层结构完全一致
])
new_model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

# 加载预训练权重
new_model.load_weights("./best_mlp_weights.h5")

# 直接在新数据集上训练即可,需要微调部分层的话手动设置对应层的trainable属性为False即可

注意:两个版本下都需要保证加载权重的模型和保存权重的模型架构、变量/层名完全匹配,如果只需要加载部分层的权重,可以在加载时添加by_name=True参数,仅加载名称匹配的层的权重。

内容的提问来源于stack exchange,提问作者samsambakster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 11:09:02