获取图层的输出作为特征向量(KERAS)

时间:2017-09-04 03:49:29

标签: tensorflow keras theano keras-layer

我在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),而flatten layer的输出是(None,30)。

对于每个列车和测试样本:在作为具有30个特征(数字)的特征向量之前,是否有可能将平坦层的输出作为特征向量,然后将其作为密集层的输入?

1 个答案:

答案 0 :(得分:2)

按以下方式选择最后一层:

last = cnn.layers[-1]

然后使用:

创建一个新模型
inp = Input(shape=(Dimension_of_input,))
features = Model(inp, last)

所以,

feature_vec = features.predict(x_train)

将展平图层的输出作为每个火车样本的特征向量