【问题标题】:Getting the output of layer as a feature vector (KERAS)将层的输出作为特征向量(KERAS)
【发布时间】:2018-02-12 06:39:57
【问题描述】:

我在 keras 中有一个 CNN 模型(用于信号分类):

    cnn = Sequential()

    cnn.add(Conv1D(10,kernel_size=8,strides=4, padding="same",activation="relu",input_shape=(Dimension_of_input,1)))
    cnn.add(MaxPooling1D(pool_size=3))

    cnn.add(Conv1D(10,kernel_size=8,strides=4, padding="same",activation="relu"))
    cnn.add(MaxPooling1D(2))
    cnn.add(Flatten())

    cnn.add(Dense(2, activation="softmax"))

使用'model.summary()'方法,我可以得到每一层输出的形状。在我的模型中,最后一个最大池化层的输出是 (None, 1, 30),扁平层的输出是 (None, 30)。

对于每个训练和测试样本:在 keras 中,是否有可能将 flatten 层的输出作为具有 30 个特征(数字)的特征向量,然后将其作为密集层的输入?

【问题讨论】:

  • 是的,有可能。请参阅this 答案。

标签: tensorflow keras theano keras-layer


【解决方案1】:

选择最后一层:

last = cnn.layers[-1]

然后使用以下方法创建一个新模型:

inp = Input(shape=(Dimension_of_input,))
features = Model(inp, last)

所以,

feature_vec = features.predict(x_train)

将扁平层的输出作为每个训练样本的特征向量提供给您

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-26
    • 1970-01-01
    • 2016-11-16
    • 1970-01-01
    • 2020-06-19
    • 1970-01-01
    • 2017-07-28
    相关资源
    最近更新 更多