从CNN图层获取过滤器值

问题描述 投票:1回答:1

我有以下模型(例如)

input_img = Input(shape=(224,224,1)) # size of the input image
x = Conv2D(64, (3, 3), strides=(1, 1), activation='relu', padding='same')(input_img)

我的autoencoder模型中有几层这样的。我对第一层的过滤器特别感兴趣。有64个过滤器,每个过滤器大小为3x3。

为了获得过滤器,我尝试使用以下代码:

x.layers[0].get_weights()[0]

但我得到的错误如下:

AttributeError                            Traceback (most recent call last)
<ipython-input-166-96506292d6d7> in <module>()
      4 x = Conv2D(64, (3, 3), strides=(1, 1), activation='relu', padding='same')(input_img)
      5 
----> 6 x.layers[0].get_weights()[0]

AttributeError: 'Tensor' object has no attribute 'layers'

我没有使用顺序模型。在几个这样的图层之后,我的模型将使用以下命令形成。

 model = Model()

我是CNN的新手,我甚至不知道get_weights函数是否可以帮助我获得过滤器值。我如何获得过滤器的价值?

python tensorflow conv-neural-network keras-layer autoencoder
1个回答
0
投票

目前,您的代码在图层定义本身上调用layers函数。

首先需要编译模型,然后您可以在模型上使用layers函数来检索特定图层的权重。

在你的情况下:

weights = model.layers[1].get_weights()

将为您提供第一卷积层的权重集

编译模型后可以使用哪个:

model = Model(inputs=input_img, output=b)

其中b指的是模型中的最后一层。

© www.soinside.com 2019 - 2024. All rights reserved.