Python 如何在定制TensorFlow(2.0)Keras模型中获得批量大小?
我正在子类化Python 如何在定制TensorFlow(2.0)Keras模型中获得批量大小?,python,tensorflow,tf.keras,Python,Tensorflow,Tf.keras,我正在子类化tf.keras.model。我需要重写compute\u output\u shape,否则,我将得到一个来自的NotImplementedError compute\u output\u shape将input\u shape作为输入。然而,这并没有多大帮助,因为批量大小不知何故在TensorFlow中丢失了 如果我尝试以input\u shape相同的方式返回以None开头的形状,我会得到TypeError:“str”对象不能解释为整数。仅仅忽略批量大小也不起作用 批量大小是可
tf.keras.model
。我需要重写compute\u output\u shape
,否则,我将得到一个来自的NotImplementedError
compute\u output\u shape
将input\u shape
作为输入。然而,这并没有多大帮助,因为批量大小不知何故在TensorFlow中丢失了
如果我尝试以input\u shape
相同的方式返回以None
开头的形状,我会得到TypeError:“str”对象不能解释为整数。仅仅忽略批量大小也不起作用
批量大小是可变的,所以我不能仅仅硬编码。不需要计算输出\u形状
,只需要调用
方法。你的代码一定有问题,与compute\u output\u shape
@SzymonMaszke不相关。你看过链接了吗?是的,但我从未遇到过编写compute\u output\u shape
的需要。您应该在提供的链接中看得更高一些,确切地说,这会告诉您您并没有急切地运行(这很奇怪,因为它是默认的TF2.0模式)。这就是为什么我不认为这是你问题的原因。通常,在模型创建之后,使用指定的input\u shape
调用build,这就足够了。这可能是上面的NotImplemented
错误,在这种情况下,您的自定义层可能是issue@SzymonMaszke我猜它并没有很好地运行,因为即使在TF2.0中,Keras模型也是以图形模式执行的。(我确实将dynamic=True
传递给了我的自定义模型,但它正被通过函数API创建的另一个模型使用。)不需要compute\u output\u shape
,只需调用方法即可。你的代码一定有问题,与compute\u output\u shape
@SzymonMaszke不相关。你看过链接了吗?是的,但我从未遇到过编写compute\u output\u shape
的需要。您应该在提供的链接中看得更高一些,确切地说,这会告诉您您并没有急切地运行(这很奇怪,因为它是默认的TF2.0模式)。这就是为什么我不认为这是你问题的原因。通常,在模型创建之后,使用指定的input\u shape
调用build,这就足够了。这可能是上面的NotImplemented
错误,在这种情况下,您的自定义层可能是issue@SzymonMaszke我猜它并没有很好地运行,因为即使在TF2.0中,Keras模型也是以图形模式执行的。(我确实将dynamic=True
传递给了我的自定义模型,但它正被通过函数API创建的另一个模型使用。)
class Custom(tf.keras.Model):
...
def compute_output_shape(self, input_shape):
# input_shape = (None, ...)
batch_size = ???
return (batch_size, ...)