最近希望通过Keras搭建神经网络,并将神经网络的输出作为数据特征,再次feed其他模型,首先建立模型:
model = Sequential()
model.add(Convolution2D(filters=6, kernel_size=(5, 5), padding='valid', input_shape=(img_rows, img_cols, 1), activation='tanh'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Convolution2D(filters=16, kernel_size=(5, 5), padding='valid', activation='tanh'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(120, activation='tanh'))
model.add(Dense(84, activation='tanh'))
model.add(Dense(n_classes, activation='softmax'))
打印模型各层:
for index in range(8):
layer=model.get_layer(index=index)
# layer=model.layers[index] # 这样获取每一个层也是一样的
print(model)
取其中一层作为特征提取器:
#提取第五层的输出
layer_model = Model(inputs=model.input, outputs=model.layers[4].output)
#使用这个提取出的模型进行预测,得到中间输出特征
x_train_Dense = layer_model.predict(Xtrain) #Xtrain为数据特征
参考资料: