如何在图层中设置自定义权重?

时间:2020-05-28 07:18:17

标签: tensorflow keras deep-learning neural-network

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

下面是我使用的代码

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
)

模块摘要

enter image description here

有人可以帮助我如何在上述代码中设置set_weights吗? 预先感谢。

1 个答案:

答案 0 :(得分:2)

您可以使用set_weights方法进行操作。

例如,如果您想设置LSTM Layer的权重,则可以使用model.layers[0]来访问它,并且如果Custom Weights以数组的形式命名为{{ 1}},然后可以使用以下代码将my_weights_matrix设置为第一层(LSTM):

Custom Weights

如果您不想在训练期间修改权重,则必须使用代码model.layers[0].set_weights([my_weights_matrix]) 冻结该图层。

如果您遇到任何其他问题,请告诉我,我们将竭诚为您服务。

希望这会有所帮助。学习愉快!