Python Keras如何将密集层转换为卷积层

pkropf

我很难找到正确的权重映射,以便将密集层转换为卷积层。

这是我正在研究的ConvNet的摘录:

model.add(Convolution2D(512, 3, 3, activation='relu'))
model.add(MaxPooling2D((2,2), strides=(2,2)))
model.add(Flatten())
model.add(Dense(4096, activation='relu'))

MaxPooling之后,输入的形状为(512,7,7)。我想将密集层转换为卷积层,使其看起来像这样:

model.add(Convolution2D(512, 3, 3, activation='relu'))
model.add(MaxPooling2D((2,2), strides=(2,2)))
model.add(Convolution2D(4096, 7, 7, activation='relu'))

但是,我不知道如何重新调整权重才能正确地将展平的权重映射到卷积层所需的(4096,512,7,7)结构?目前,致密层的权重为(25088,4096)。我需要以某种方式将这25088个元素映射到(512,7,7)的维度,同时保留权重到神经元的正确映射。到目前为止,我已经尝试了多种重塑然后移调的方法,但是我还没有找到正确的映射。

我一直在尝试的一个例子是:

weights[0] = np.transpose(np.reshape(weights[0],(512,7,7,4096)),(3,0,1,2))

但它无法正确映射权重。通过比较两个模型的输出,我验证了映射是否正确。如果正确完成,我希望输出应该是相同的。

还在寻找解决方案吗?这里是:

new_conv_weights = dense_weights.transpose(1,0).reshape(new_conv_shape)[:,:,::-1,::-1]

在您的情况下:

weights[0] = weights[0].transpose(1,0).reshape((4096,512,7,7))[:,:,::-1,::-1]

棘手的部分是conv过滤器翻转[:,:,::-1,::-1]。Theano确实进行卷积而不是相关(例如,与caffe不同)。因此,在Keras过滤器中,如下所示:

1 0
0 0

应用于矩阵:

1 2 3 4 5
6 7 8 9 0
1 2 3 4 5

结果为矩阵:

7 8 9 0 
2 3 4 5

不是这样,正如人们期望的那样:

1 2 3 4
6 7 8 9

为了使事情按预期工作,您需要将滤镜旋转180度。刚刚为自己解决了这个问题,希望对您或其他人有帮助。干杯。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将json转换为python类?

来自分类Dev

如何将VBscript转换为Python代码?

来自分类Dev

如何将Boost Python列表转换为PyObject

来自分类Dev

如何将python gtk pixbuf转换为simplecv图像

来自分类Dev

如何将原始javascript对象转换为python字典?

来自分类Dev

如何将Iron Python字典转换为Python字典

来自分类Dev

如何将Python dict转换为特定类型的对象?

来自分类Dev

如何将Python POST数据转换为JSON?

来自分类Dev

如何将python str转换为bytearray

来自分类Dev

如何将python给您的时间转换为int

来自分类Dev

如何将python struct.unpack转换为Java

来自分类Dev

如何将python列表转换为简单的YAML?

来自分类Dev

如何将Python列表转换为列向量?

来自分类Dev

如何将HEXEWKB转换为经度(在python中)?

来自分类Dev

如何将Midi文件转换为按键(在Python中)?

来自分类Dev

Python Keras如何在将卷积层转换为lstm层后更改输入的大小

来自分类Dev

如何将整数转换为python中的单词?

来自分类Dev

如何将Python元组转换为.csv文件?

来自分类Dev

如何将\\ xhh转换为\ xhh python

来自分类Dev

如何将python字典中的数组转换为元组?

来自分类Dev

将第二层中具有不相等元素的python嵌套列表转换为dataframe

来自分类Dev

Python如何将字符串转换为整数

来自分类Dev

如何将Python Decimal实例转换为C ++ double?

来自分类Dev

keras如何管理卷积层的权重?

来自分类Dev

如何将Iron Python字典转换为Python字典

来自分类Dev

如何将[Raw] .load字符串转换为DNS层?(使用python和scapy)

来自分类Dev

使用keras python输出卷积层

来自分类Dev

如何将 Python [... for ... in ... if ...] 转换为 JavaScript

来自分类Dev

Python 中使用 Numpy 的卷积层

Related 相关文章

热门标签

归档