python权重初始值设置_python – 如何使用numpy数组在Keras中设置权重?

我在使用Keras后端函数设置值时遇到问题.我正在尝试将模型从PyTorch转换为Keras并尝试设置Keras模型的权重,但权重似乎没有设置.注意:我实际上并没有使用np.ones来设置一个例子.

我努力了…

加载现有模型

import keras

from keras.models import load_model, Model

model = load_model(model_dir+file_name)

keras_layer = [layer for layer in model.layers if layer.name=='conv2d_1'][0]

创建一个简单的模型

img_input = keras.layers.Input(shape=(3,3,3))

x = keras.layers.Conv2D(1, kernel_size=1, strides=1, padding="valid",

use_bias=False, name='conv1')(img_input)

model = Model(img_input, x)

keras_layer = [layer for layer in model.layers if layer.name=='conv1'][0]

然后使用set_weights或set_value

keras_layer.set_weights([np.ones((1, 1, 3, 1))])

要么…

K.batch_set_value([(weight,np.ones((1, 1, 3, 1))) for weight in keras_layer.weights])

之后我打电话给以下任何一个:

K.batch_get_value([weight for weight in keras_layer.weights])

keras_layer.get_weights()

并且没有任何权重显示已设置.返回与之前相同的值.

[array([[[[ 1.61547325e-06],

[ 2.97779252e-06],

[ 1.50160542e-06]]]], dtype=float32)]

如何使用numpy数组值设置Keras中图层的权重?

解决方法:

什么是代码中的keras_layer?

您可以通过以下方式设置权重:

model.layers[i].set_weights(listOfNumpyArrays)

model.get_layer(layerName).set_weights(...)

model.set_weights(listOfNumpyArrays)

其中model是现有模型的实例.

您可以使用上面相同实例中的get_weights()方法查看列表的预期长度及其数组形状.

标签:python,tensorflow,keras,deep-learning

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值