gpt4 book ai didi

tensorflow - 如何在 Keras 中重新初始化现有模型的层权重?

转载 作者:行者123 更新时间:2023-12-03 23:51:44 27 4
gpt4 key购买 nike

实际问题是在 Keras 中为现有(已构建)模型生成随机层权重。有一些使用 Numpy [2] 的解决方案,但选择这些解决方案并不好。因为,在 Keras 中,每个层类型都有使用不同分布的特殊初始化器。当使用 Numpy 代替初始值设定项时,生成的权重与原始权重具有不同的分布。让我们举一个例子:

我的模型的第二层是一个卷积 (1D) 层,它的初始值设定项是 GlorotUniform [1]。如果使用 Numpy 生成随机权重,则生成的权重分布将不是 GlorotUniform。

我有这个问题的解决方案,但它有一些问题。这是我所拥有的:

def set_random_weights(self, tokenizer, config):
temp_model = build_model(tokenizer, config)
self.model.set_weights(temp_model.get_weights())

我正在构建现有模型。在构建过程之后,模型的权重被重新初始化。然后我得到重新初始化的权重并将它们设置为另一个模型。生成新权重的构建模型具有冗余过程。因此,我需要一个无需构建模型和 Numpy 的新解决方案。
  • https://keras.io/initializers/
  • https://www.codementor.io/nitinsurya/how-to-re-initialize-keras-model-weights-et41zre2g
  • 最佳答案

    请参阅此问题的先前答案 here .
    具体来说,如果要使用 Keras 层的原始权重初始化器,可以执行以下操作:

    import tensorflow as tf
    import keras.backend as K

    def init_layer(layer):
    session = K.get_session()
    weights_initializer = tf.variables_initializer(layer.weights)
    session.run(weights_initializer)


    layer = model.get_layer('conv2d_1')
    init_layer(layer)

    关于tensorflow - 如何在 Keras 中重新初始化现有模型的层权重?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56630174/

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