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, ...)