gpt4 book ai didi

python-3.x - Tensorflow Keras 将权重从一个模型复制到另一个模型

转载 作者:行者123 更新时间:2023-11-30 08:23:21 25 4
gpt4 key购买 nike

使用 Tensorflow 1.4.1 中的 Keras,如何将权重从一个模型复制到另一个模型?

作为一些背景,我正在尝试在 DeepMind 发布 DQN 后为 Atari 游戏实现一个深度 q 网络 (DQN)。我的理解是,该实现使用两个网络,Q 和 Q'。使用梯度下降训练 Q 的权重,然后定期将权重复制到 Q'。

这是我构建 Q 和 Q' 的方法:

ACT_SIZE   = 4
LEARN_RATE = 0.0025
OBS_SIZE = 128

def buildModel():
model = tf.keras.models.Sequential()

model.add(tf.keras.layers.Lambda(lambda x: x / 255.0, input_shape=OBS_SIZE))
model.add(tf.keras.layers.Dense(128, activation="relu"))
model.add(tf.keras.layers.Dense(128, activation="relu"))
model.add(tf.keras.layers.Dense(ACT_SIZE, activation="linear"))
opt = tf.keras.optimizers.RMSprop(lr=LEARN_RATE)

model.compile(loss="mean_squared_error", optimizer=opt)

return model

我调用了两次以获得 Q 和 Q'。

下面有一个 updateTargetModel 方法,这是我复制权重的尝试。代码运行良好,但我的整体 DQN 实现失败。我真的只是想验证这是否是将权重从一个网络复制到另一个网络的有效方法。

def updateTargetModel(model, targetModel):
modelWeights = model.trainable_weights
targetModelWeights = targetModel.trainable_weights

for i in range(len(targetModelWeights)):
targetModelWeights[i].assign(modelWeights[i])

这里还有另一个问题讨论在磁盘上保存和加载权重 ( Tensorflow Copy Weights Issue ),但没有可接受的答案。还有一个关于从各个层加载权重的问题( Copying weights from one Conv2D layer to another ),但我想复制整个模型的权重。

最佳答案

实际上,您所做的不仅仅是简单地复制权重。您使这两个模型始终相同。每次更新一个模型时,第二个模型也会更新,因为这两个模型具有相同的权重变量。

如果您只想复制权重 - 最简单的方法是使用此命令:

target_model.set_weights(model.get_weights()) 

关于python-3.x - Tensorflow Keras 将权重从一个模型复制到另一个模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48547688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com