首页 > 解决方案 > 如何在图层中设置自定义权重?

问题描述

我正在研究如何将自定义权重设置到图层中。

下面是我使用的代码

batch_size = 64

input_dim = 12

units = 64
output_size = 1  # labels are from 0 to 9

# Build the RNN model
def build_model(allow_cudnn_kernel=True):


    lstm_layer = keras.layers.RNN(
            keras.layers.LSTMCell(units), input_shape=(None, input_dim)) 


    model = keras.models.Sequential(
        [
            lstm_layer,
            keras.layers.BatchNormalization(),
            keras.layers.Dense(output_size),
        ]
    )
    return model
model = build_model()

model.compile(
    loss=keras.losses.MeanSquaredError(),
    optimizer="Adam",
    metrics=["accuracy"],
)


model.fit(
    x_train, y_train, validation_data=(x_val, y_val), batch_size=batch_size, epochs=15
)

模型摘要

在此处输入图像描述

谁能帮助我如何在上面的代码中设置权重?提前致谢。

标签: tensorflowkerasdeep-learningneural-network

解决方案


您可以使用set_weights方法来做到这一点。

例如,如果你想设置你的权重LSTM Layer,可以使用它来访问model.layers[0],如果你Custom Weights是,比如说在一个数组中,命名为my_weights_matrix,那么你可以Custom Weights使用下面显示的代码将你设置为第一层(LSTM):

model.layers[0].set_weights([my_weights_matrix])

如果您不希望在训练期间修改权重,则必须使用代码冻结该层,model.layers[0].trainable = False.

如果您遇到任何其他问题,请告诉我,我很乐意为您提供帮助。

希望这可以帮助。快乐学习!


推荐阅读