【问题标题】:Can't use Sequential Model in Tensorflow无法在 Tensorflow 中使用序列模型
【发布时间】:2022-01-12 00:20:13
【问题描述】:

这是代码:

def point_wise_feed_forward_network(d_model, dff):
  return tf.keras.Sequential([
      tf.keras.layers.Dense(dff, activation='relu'),  # (batch_size, seq_len, dff)
      tf.keras.layers.Dense(d_model)  # (batch_size, seq_len, d_model)
  ])

我在一个 phew 类中使用它,将其初始化为:

class Foo(tf.keras.layers.Layer):
   def __init__(self, d_model, dff):
      super().__init__()
      self.net = point_wise_feed_forward_network(d_model, dff)
   ...
   
   def call(self, args):
      ... # getting prev_layer (which is a tf.keras.layers.LayerNormalization() layer)
      var = self.net(prev_layer)
      ...

主要输出错误是:

ValueError: Weights for model decoder_sequential have not yet been created. Weights are created when the Model is first called on inputs or `build()` is called with an `input_shape`
File "<ipython-input-314-94b9d1a33527>", line 25, in train_step  *
        gradients = tape.gradient(loss, transformer.trainable_variables)
    File "C:\Users\User\anaconda3\envs\tfm2\lib\site-packages\keras\engine\base_layer.py", line 2308, in trainable_variables
        return self.trainable_weights
    File "C:\Users\User\anaconda3\envs\tfm2\lib\site-packages\keras\engine\training.py", line 2104, in trainable_weights
        trainable_variables += trackable_obj.trainable_variables
    File "C:\Users\User\anaconda3\envs\tfm2\lib\site-packages\keras\engine\base_layer.py", line 2308, in trainable_variables
        return self.trainable_weights
    File "C:\Users\User\anaconda3\envs\tfm2\lib\site-packages\keras\engine\base_layer.py", line 1357, in trainable_weights
        children_weights = self._gather_children_attribute('trainable_variables')
    File "C:\Users\User\anaconda3\envs\tfm2\lib\site-packages\keras\engine\base_layer.py", line 2915, in _gather_children_attribute
        return list(
    File "C:\Users\User\anaconda3\envs\tfm2\lib\site-packages\keras\engine\base_layer.py", line 2917, in <genexpr>
        getattr(layer, attribute) for layer in nested_layers))
    File "C:\Users\User\anaconda3\envs\tfm2\lib\site-packages\keras\engine\base_layer.py", line 2308, in trainable_variables
        return self.trainable_weights
    File "C:\Users\User\anaconda3\envs\tfm2\lib\site-packages\keras\engine\base_layer.py", line 1357, in trainable_weights
        children_weights = self._gather_children_attribute('trainable_variables')
    File "C:\Users\User\anaconda3\envs\tfm2\lib\site-packages\keras\engine\base_layer.py", line 2915, in _gather_children_attribute
        return list(
    File "C:\Users\User\anaconda3\envs\tfm2\lib\site-packages\keras\engine\base_layer.py", line 2917, in <genexpr>
        getattr(layer, attribute) for layer in nested_layers))
    File "C:\Users\User\anaconda3\envs\tfm2\lib\site-packages\keras\engine\base_layer.py", line 2308, in trainable_variables
        return self.trainable_weights
    File "C:\Users\User\anaconda3\envs\tfm2\lib\site-packages\keras\engine\training.py", line 2099, in trainable_weights
        self._assert_weights_created()
    File "C:\Users\User\anaconda3\envs\tfm2\lib\site-packages\keras\engine\sequential.py", line 471, in _assert_weights_created
        super(functional.Functional, self)._assert_weights_created()  # pylint: disable=bad-super-call
    File "C:\Users\User\anaconda3\envs\tfm2\lib\site-packages\keras\engine\training.py", line 2736, in _assert_weights_created
        raise ValueError(f'Weights for model {self.name} have not yet been '

    

所以,我在每个使用它的类中都对其进行了初始化。为什么说我没有创建模型?

PD:这个错误只有在我使用tf.GradientTape()时才会出现

PDD:I'm following this Tensorflow tutorial

【问题讨论】:

  • 第一次密集调用不需要传递 input_shape 吗?
  • @MarkLavin 不,但更早的时候这已经解决了。请看我正在做的教程
  • 不要指向教程,而是包含您自己的代码来重现问题,因为您显然在做不同的事情。
  • @Dr.Snoopy 很好,现在可以了。我什么都没碰,我刚刚重新启动了我的电脑。似乎这是依赖关系之间的“停电”;

标签: tensorflow tensorflow2.0


【解决方案1】:

对于模型中的第一层,您需要传入输入形状,例如 (224,224,3)

tf.keras.layers.Dense(dff, activation='relu', input_shape=(224,224,3)
```
you also need to compile your model

【讨论】:

  • 你好,格里,谢谢你的回答。我刚刚重新启动了我的电脑,现在它可以工作了,所以它必须与依赖关系有关。
猜你喜欢
  • 1970-01-01
  • 2022-08-10
  • 2020-05-07
  • 2016-09-08
  • 2020-01-03
  • 2017-03-06
  • 2018-10-31
  • 2020-06-08
  • 2020-01-03
相关资源
最近更新 更多