无法理解方法build在tensorflow keras层(tf.keras.layers.Layer)中的行为

问题描述 投票:0回答:1

tensorflow keras中的层具有一种方法build,该方法用于将权重创建延迟到您看到输入将是什么的时候。 a layer's build method

我有几个问题我无法找到答案:

  1. here据说

    如果将一个Layer实例分配为另一个Layer的属性,则外层将开始跟踪内层的权重。

跟踪层的权重是什么意思?

  1. 同一链接还提到

    我们建议在init方法中创建此类子层(由于子层通常具有构建方法,因此将在构建外层时构建它们。)>

  2. 是否表示在运行子类(自身)的build方法时,将通过self的所有属性进行迭代,并且从tf.keras.layer.Layer的实例中发现的任何子类都将具有其build方法是否自动运行?

  1. 我可以运行此代码:
  2. class Net(tf.keras.Model):
      """A simple linear model."""
    
      def __init__(self):
        super(Net, self).__init__()
        self.l1 = tf.keras.layers.Dense(5)
      def call(self, x):
        return self.l1(x)
    
    net = Net()
    print(net.variables)
    

但不是这个:

class Net(tf.keras.Model):
  """A simple linear model."""

  def __init__(self):
    super(Net, self).__init__()
    self.l1 = tf.keras.layers.Dense(5)
  def build(self,input_shape):
    super().build()
  def call(self, x):
    return self.l1(x)

net = Net()
print(net.variables)

为什么?

tensorflow keras中的层具有一种方法构建,该方法用于将权重创建推迟到您看到输入将是什么的时候。一层的构建方法我有几个问题,我...

tensorflow keras tensorflow2.0 keras-layer tf.keras
1个回答
0
投票

例如,当您构建自定义的tf.keras.Model时,我会说build

© www.soinside.com 2019 - 2024. All rights reserved.