keras读取任意层的输出

本文详细介绍了一个深度学习模型的构建过程,包括输入层、多个卷积层、池化层及最终的输出层。模型使用了TensorFlow后端,展示了各层的参数数量和输出形状,适合对深度学习和卷积神经网络感兴趣的读者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值