如何在keras中通过numpy数组初始化图层

Posted

技术标签:

【中文标题】如何在keras中通过numpy数组初始化图层【英文标题】:how to initialize layers by numpy array in keras 【发布时间】:2017-02-28 14:02:36 【问题描述】:

我想将预训练的 caffe 模型转换为 keras,然后我需要逐层初始化图层。 我将权重和偏差保存在一个 mat 文件中,并将它们加载到 python 工作区。 我知道“权重”参数获取 numpy 数组但不知道如何? 谢谢

【问题讨论】:

对于卷积层检查***.com/questions/42211619/… @maz 很有用 【参考方案1】:

您可以在Keras Layers Documentation 中获取有关如何设置模型权重的更多信息。基本上你使用:

layer.set_weights(weights):从 Numpy 数组列表中设置层的权重(与get_weights 的输出形状相同)。

或者您可以在创建图层时直接初始化它们。每个层都有一个参数weights,您可以使用 numpy 数组进行设置。阅读each layer's documentation 以提供正确的权重格式。例如,Dense() 层接受参数weights 的这种格式:

设置为初始权重的 Numpy 数组列表。该列表应该有 2 个元素,形状 (input_dim, output_dim) 和 (output_dim,) 分别用于权重和偏差。 source

【讨论】:

有没有办法使用 keras 初始化器来构造一个 numpy 数组?例如。 glorot_uniform()(shape) -> ndarray([...]) @BallpointBen 你找到解决方案了吗?似乎是个问题:***.com/questions/56190405/…

以上是关于如何在keras中通过numpy数组初始化图层的主要内容,如果未能解决你的问题,请参考以下文章

如何在不启用 keras 中的 run_eagerly 标志的情况下将张量转换为 numpy 数组

在 Python 中通过线程/核心/节点并行化 for 循环

如何在 Keras 中获取图层的输出形状?

Keras 错误:无法将符号 Keras 输入/输出转换为 numpy 数组

是否可以将数据帧传递给每行都有一个 numpy 数组的 TF/Keras?

如何在动态解决方案中通过内部数组循环嵌套数组