我正在研究如何在图层中设置自定义权重。
下面是我使用的代码
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
)
模块摘要
有人可以帮助我如何在上述代码中设置set_weights吗? 预先感谢。
答案 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])
冻结该图层。
如果您遇到任何其他问题,请告诉我,我们将竭诚为您服务。
希望这会有所帮助。学习愉快!