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

如何将TensorFlow/Keras神经网络模型初始化为指定权重与偏置

设置Keras模型的权重与偏置初始值

针对你的两数相加模型,有两种常用方法可以指定权重和偏置的初始值,以下是具体实现:

方法一:定义层时指定初始化器

直接在Dense层中通过kernel_initializer(权重初始化器)和bias_initializer(偏置初始化器)设置初始值,适合在构建模型时直接定义:

import tensorflow as tf
from tensorflow.keras.layers import Dense

def build_model():
    model = tf.keras.models.Sequential()
    
    # 隐藏层:权重初始化为全1,偏置初始化为0
    model.add(Dense(
        units=1, 
        input_dim=2,
        kernel_initializer=tf.keras.initializers.Constant(value=1.0),
        bias_initializer=tf.keras.initializers.Constant(value=0.0)
    ))
    
    # 输出层:权重初始化为1,偏置初始化为0
    model.add(Dense(
        units=1,
        kernel_initializer=tf.keras.initializers.Constant(value=1.0),
        bias_initializer=tf.keras.initializers.Constant(value=0.0)
    ))
    
    return model

# 验证效果
model = build_model()
# 输入[1,2],预期输出3
print(model.predict([[1, 2]]))

方法二:构建模型后手动设置权重

如果已经构建好模型,可以通过层的set_weights()方法手动赋值,需要注意权重的形状必须与层的权重矩阵形状匹配:

import tensorflow as tf
from tensorflow.keras.layers import Dense

def build_model():
    model = tf.keras.models.Sequential()
    model.add(Dense(1, input_dim=2))
    model.add(Dense(1))
    return model

model = build_model()

# 设置隐藏层权重:权重矩阵形状为(2,1),全1;偏置形状为(1,),全0
hidden_layer = model.layers[0]
hidden_layer.set_weights([
    tf.constant([[1.0], [1.0]]),  # 权重矩阵
    tf.constant([0.0])            # 偏置向量
])

# 设置输出层权重:权重矩阵形状为(1,1),值为1;偏置形状为(1,),全0
output_layer = model.layers[1]
output_layer.set_weights([
    tf.constant([[1.0]]),  # 权重矩阵
    tf.constant([0.0])     # 偏置向量
])

# 验证效果
print(model.predict([[1, 2]]))

两种方法都能让模型初始状态就实现精确的两数相加,你可以基于这个初始状态进行训练,观察模型的收敛情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 12:05:22