gpt4 book ai didi

python - 如何比较不同 Keras 模型的权重?

转载 作者:行者123 更新时间:2023-12-02 02:42:33 28 4
gpt4 key购买 nike

我以 .h5 格式保存了许多模型。我想比较它们的特征,例如重量。
我不知道如何特别以表格和数字的形式适本地比较它们。
提前致谢。

最佳答案

权重内省(introspection)是一项相当先进的工作,需要针对特定​​模型进行处理。可视化权重在很大程度上是一项技术挑战,但你如何处理这些信息是另一回事——我将主要讨论前者,但会触及后者。

更新 : 我也推荐See RNN用于权重、梯度和激活可视化。

可视化权重 : 一种方法如下:

  • 检索感兴趣层的权重。例如:model.layers[1].get_weights()
  • 了解权重角色和维度。例如:LSTM 具有三组权重:kernel , recurrent , 和 bias ,每个服务于不同的目的。每个权重矩阵中都有门权重 - 输入、单元格、忘记、输出。对于 Conv 层,过滤器 (dim0)、内核和步幅之间的区别。
  • 根据 (2) 以有意义的方式组织用于可视化的权重矩阵。例如:对于 Conv,与 LSTM 不同,特定于特征的处理并不是真正必要的,我们可以简单地展平内核权重和偏置权重,并将它们可视化为直方图
  • 选择可视化方法:直方图、热图、散点图等 - 对于扁平化数据,最好使用直方图


  • 解释权重 : 一些方法是:
  • 稀疏性:如果权重范数(“平均”)较低,则模型是稀疏的。可能有益也可能无益。
  • 健康:如果过多的权重为零或接近于零,则表明死亡神经元过多;这对于调试很有用,因为一旦层处于这种状态,它通常不会恢复 - 所以应该重新开始训练
  • 稳定性:如果权重变化很大且很快,或者如果有很多高值(value)的权重,这可能表明梯度性能受损,例如通过梯度裁剪或权重约束


  • 型号对比 :没有办法简单地并排查看来自不同模型的两个权重并决定“这是更好的”;分别分析每个模型,例如如上所述,然后决定哪个模型的优点大于缺点。

    然而,最终的决胜局将是验证性能——它也是更实用的一种。它是这样的:
  • 针对多个超参数配置训练模型
  • 选择一个具有最佳验证性能的
  • 微调该模型(例如,通过进一步的超参数配置)

  • 权重可视化应该主要作为一种调试或记录工具保留——简单地说,即使我们目前对神经网络有最好的理解,也无法仅通过查看权重来判断模型的泛化程度。

    建议 : 也可视化层输出 - 见 this answer和底部的样本输出。

    视觉示例 :

    from tensorflow.keras.layers import Input, Conv2D, Dense, Flatten
    from tensorflow.keras.models import Model

    ipt = Input(shape=(16, 16, 16))
    x = Conv2D(12, 8, 1)(ipt)
    x = Flatten()(x)
    out = Dense(16)(x)

    model = Model(ipt, out)
    model.compile('adam', 'mse')

    X = np.random.randn(10, 16, 16, 16) # toy data
    Y = np.random.randn(10, 16) # toy labels
    for _ in range(10):
    model.train_on_batch(X, Y)

    def get_weights_print_stats(layer):
    W = layer.get_weights()
    print(len(W))
    for w in W:
    print(w.shape)
    return W

    def hist_weights(weights, bins=500):
    for weight in weights:
    plt.hist(np.ndarray.flatten(weight), bins=bins)

    W = get_weights_print_stats(model.layers[1])
    # 2
    # (8, 8, 16, 12)
    # (12,)

    hist_weights(W)

    enter image description here

    Conv1D 输出可视化 : ( source )

    关于python - 如何比较不同 Keras 模型的权重?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58401393/

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