model.get_layer() 和 model.get_layer().output 有什么区别

What is the difference between model.get_layer() and model.get_layer().output

我知道这是个愚蠢的问题,但我在这里有点困惑... 因为我正在使用 VGG16 进行迁移学习,它有一个名为 'block4_pool' 的层。 那么这两行的对象有什么区别returns,

base_model.get_layer('block4_pool')
base_model.get_layer('block4_pool').output

他们返回了什么?

base_model.get_layer('block4_pool')

检索名为 block4_pool 的图层,它是一个 tensorflow.keras.layers 对象

base_model.get_layer('block4_pool').output

检索名为 block4_pool 的层的输出张量。

第一个returns一个层对象,它是一个MaxPooling2D层。

第二个是这一层的输出tensor

让我们看看这些到底是什么:

第一个语句:

print(base_model.get_layer('block4_pool'))

>>  <tensorflow.python.keras.layers.pooling.MaxPooling2D object at 0x7f50fe7f8ed0>

第二条语句:

print(base_model.get_layer('block4_pool').output) 

>>  KerasTensor(type_spec=TensorSpec(shape=(None, 9, 9, 512), dtype=tf.float32, name=None), name='block4_pool/MaxPool:0', description="created by layer 'block4_pool'")