input_data = Input(shape=(28, 28, 1))
x = Conv2D(64, (3,3), strides=(1,1), padding='same', activation='relu')(input_data)
x = Conv2D(64, (3,3), strides=(1,1), padding='same', activation='relu')(x)
x = MaxPooling2D(pool_size=(2,2), strides=(2,2), padding='valid')(x)
x = Conv2D(128, (3,3), strides=(1,1), padding='same', activation='relu')(x)
x = Conv2D(128, (3,3), strides=(1,1), padding='same', activation='relu')(x)
x = MaxPooling2D(pool_size=(2,2), strides=(2,2), padding='valid')(x)
x = Conv2D(256, (3,3), strides=(1,1), padding='same', activation='relu')(x)
x = Conv2D(256, (3,3), strides=(1,1), padding='same', activation='relu')(x)
x = MaxPooling2D(pool_size=(2,2), strides=(2,2), padding='valid')(x)
x = Conv2D(512, (3,3), strides=(1,1), padding='same', activation='relu')(x)
x = Conv2D(512, (3,3), strides=(1,1), padding='same', activation='relu')(x)
y = MaxPooling2D(pool_size=(2,2), strides=(2,2), padding='valid')(x)
model = Model(inputs=input_data, outputs=y)
model.summary()
# print(model.input)
# print(model.inputs)
# print(model.output)
# print(model.outputs)
# print(model.layers)
print(model.layers[3].output)
print(model.get_layer(name='max_pooling2d_1').output)
x2 = Input(shape=(224, 224, 1))
base_model = Model(inputs=model.input, outputs=model.get_layer(name='max_pooling2d_1').output)
y2 = base_model(x2)
print(y2)
'''
这样就报错
x2 = Input(shape=(224, 224, 1))
base_model = Model(inputs=x2, outputs=model.get_layer(name='max_pooling2d_1').output)
必须:
base_model = Model(model.input, outputs=model.get_layer(name='max_pooling2d_1').output)
然后再y2 = base_model(x2)
'''
Using TensorFlow backend.
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_1 (InputLayer) (None, 28, 28, 1) 0
_________________________________________________________________
conv2d_1 (Conv2D) (None, 28, 28, 64) 640
_________________________________________________________________
conv2d_2 (Conv2D) (None, 28, 28, 64) 36928
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 14, 14, 64) 0
_________________________________________________________________
conv2d_3 (Conv2D) (None, 14, 14, 128) 73856
_________________________________________________________________
conv2d_4 (Conv2D) (None, 14, 14, 128) 147584
_________________________________________________________________
max_pooling2d_2 (MaxPooling2 (None, 7, 7, 128) 0
_________________________________________________________________
conv2d_5 (Conv2D) (None, 7, 7, 256) 295168
_________________________________________________________________
conv2d_6 (Conv2D) (None, 7, 7, 256) 590080
_________________________________________________________________
max_pooling2d_3 (MaxPooling2 (None, 3, 3, 256) 0
_________________________________________________________________
conv2d_7 (Conv2D) (None, 3, 3, 512) 1180160
_________________________________________________________________
conv2d_8 (Conv2D) (None, 3, 3, 512) 2359808
_________________________________________________________________
max_pooling2d_4 (MaxPooling2 (None, 1, 1, 512) 0
=================================================================
Total params: 4,684,224
Trainable params: 4,684,224
Non-trainable params: 0
_________________________________________________________________
Tensor("max_pooling2d_1/MaxPool:0", shape=(?, 14, 14, 64), dtype=float32)
Tensor("max_pooling2d_1/MaxPool:0", shape=(?, 14, 14, 64), dtype=float32)
Tensor("model_2/max_pooling2d_1/MaxPool:0", shape=(?, 112, 112, 64), dtype=float32)