我在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个特征(数字)的特征向量之前,是否有可能将平坦层的输出作为特征向量,然后将其作为密集层的输入?
答案 0 :(得分:2)
按以下方式选择最后一层:
last = cnn.layers[-1]
然后使用:
创建一个新模型inp = Input(shape=(Dimension_of_input,))
features = Model(inp, last)
所以,
feature_vec = features.predict(x_train)
将展平图层的输出作为每个火车样本的特征向量