【问题标题】:Why does get_weights return an empty list?为什么 get_weights 返回一个空列表?
【发布时间】:2017-11-04 02:37:24
【问题描述】:

我正在自学数据科学,一些特别的东西引起了我的注意。在我正在编写的示例 DNN 教程中,我发现 Keras layer.get_weights() 函数为我的变量返回了空列表。我已成功交叉验证并使用model.fit() 函数计算召回分数。

但是当我尝试对我的分类变量使用 get_weights() 函数时,它会返回所有的空权重。

我不是在寻找代码的解决方案,但我只是对可能导致这种情况的原因感到好奇。我已经阅读了 Keras API,但它没有为我提供我希望看到的信息。什么可能导致 Keras 中的 get_weights() 函数返回空列表,当然权重未设置除外?

【问题讨论】:

  • 没有源代码或用于运行教程的规范,我们无法弄清楚发生这种情况的原因。

标签: python machine-learning tensorflow keras


【解决方案1】:

也许您在创建权重之前要求它们。

权重是在模型第一次在输入上调用时创建的,或者 build()input_shape 调用。

例如,如果您从检查点加载权重,但没有为模型提供input_shape,则get_weights() 将返回一个空列表。

【讨论】:

    【解决方案2】:

    也可能是,您正试图从没有任何权重的层中获取权重。假设您定义了以下模型:

    input = Input(shape=(4,))
    hidden_layer_0 = Dense(4, activation='tanh')(input)
    hidden_layer_1 = Dense(4, activation='tanh')(hidden_layer_0)
    output = Lambda(lambda t: l2_normalize(100000*t, axis=1))(hidden_layer_1)
    
    model = Model(input, output)
    

    并且想要打印每一层的权重(在之前构建/训练之后)。你可以这样做:

    for layer in model.layers:
        print("===== LAYER: ", layer.name, " =====")
        if layer.get_weights() != []:
            weights = layer.get_weights()[0]
            biases = layer.get_weights()[1]
            print("weights:")
            print(weights)
            print("biases:")
            print(biases)
        else:
            print("weights: ", [])
    

    如果你运行这段代码,你会得到这样的结果:

    ===== LAYER:  input_1  =====
    weights:  []
    ===== LAYER:  dense  =====
    weights:
    [[-6.86365739e-02  2.24897027e-01  ...  1.90570995e-01]]
    biases:
    [-0.02512692  -0.00486927  ...  0.04254978]
    ===== LAYER:  dense_1  =====
    weights:
    [[-6.86365739e-02  2.24897027e-01  ...  1.90570995e-01]]
    biases:
    [-0.02512692  0.00933884 ...  0.04254978]
    ===== LAYER:  lambda  =====
    weights:  []
    

    如您所见,第一个(输入)和最后一个(Lambda)层没有任何权重。

    【讨论】:

      猜你喜欢
      • 2021-02-20
      • 2023-01-05
      • 2019-11-06
      • 2020-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-03
      相关资源
      最近更新 更多