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'")
我知道这是个愚蠢的问题,但我在这里有点困惑... 因为我正在使用 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'")