【问题标题】:What is the difference between model.get_layer() and model.get_layer().outputmodel.get_layer() 和 model.get_layer().output 有什么区别
【发布时间】:2021-08-29 03:19:14
【问题描述】:

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

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

他们返回什么?

【问题讨论】:

  • 所以如果我喜欢 X=tf.keras.layers.Dense(12, activation='relu')(Y) ,那么 X 是这个密集层的输出张量,而 X 不是密集层对象本身?
  • 并且这个输出张量 X 可以被传递到下一层。我说的对吗?
  • 是的。 X 是你传递给下一层的张量。

标签: tensorflow machine-learning keras computer-vision transfer-learning


【解决方案1】:
base_model.get_layer('block4_pool')

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

base_model.get_layer('block4_pool').output

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

【讨论】:

    【解决方案2】:

    第一个返回一个 layer 对象,它是一个 MaxPooling2D 层。

    第二个是这一层的输出张量

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

    第一句话:

    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'")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-26
      • 2012-02-04
      • 2020-12-05
      • 2022-06-12
      • 2010-10-02
      • 2011-12-12
      • 2010-09-16
      • 2012-03-14
      相关资源
      最近更新 更多