【问题标题】:Keras CNN get output from the Convolutional stepsKeras CNN 从卷积步骤中获取输出
【发布时间】:2018-07-11 13:20:57
【问题描述】:

我开始使用 Keras 构建 CNN 模型。

我使用以下架构构建了一个结果相当准确的 CNN。

classifier = Sequential()


classifier.add(Convolution2D(32, (3,3), input_shape = (64, 64, 3), activation='relu'))


classifier.add(MaxPool2D(pool_size = (2,2)))

classifier.add(Convolution2D(32, (3,3), activation='relu'))
classifier.add(MaxPool2D(pool_size = (2,2)))

classifier.add(Convolution2D(32, (3,3), activation='relu'))
classifier.add(MaxPool2D(pool_size = (2,2)))

classifier.add(Convolution2D(32, (3,3), activation='relu'))
classifier.add(MaxPool2D(pool_size = (2,2)))

classifier.add(Flatten())

classifier.add(Dense(units=128, activation='relu'))
classifier.add(Dropout(rate = 0.25))
classifier.add(Dense(units=128, activation='relu'))
classifier.add(Dropout(rate = 0.25))


classifier.add(Dense(units=1, activation='sigmoid'))
classifier.compile(optimizer = 'sgd', loss = 'binary_crossentropy', metrics=['accuracy'])

我想要做的是通过模型运行我的图像,但只有卷积步骤。我对 Flattening 过程的输出感兴趣(即从卷积步骤中获取特征)。

谁能帮助我如何在 Keras 中获得它?

提前致谢

【问题讨论】:

    标签: python keras convolution


    【解决方案1】:

    这是一种解决方案。如果您对层'max_pooling2d_4'的输出感兴趣(您可以通过classifier.summary()获取层名称,但我建议您为每个层命名例如classifier.add(MaxPool2D(pool_size=(2,2), name='pool1'))):

    layer_dict = dict([(layer.name, layer) for layer in classifier.layers])
    
    # input tensor
    input_tensor = classifier.input
    
    # output tensor of the given layer
    layer_output = layer_dict['max_pooling2d_4'].output
    
    # get the output with respect to the input
    func = K.function([input_tensor], [layer_output])
    
    # test image: [64, 64, 3]
    image = np.ones((64,64,3))
    
    # get activation for the test image
    activation = func([image[np.newaxis, :, :, :]])
    

    【讨论】:

      猜你喜欢
      • 2020-11-15
      • 2019-07-10
      • 1970-01-01
      • 2017-09-27
      • 1970-01-01
      • 2018-06-21
      • 1970-01-01
      • 2019-09-19
      • 2018-01-24
      相关资源
      最近更新 更多