Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tensorflow 在定义自定义tf.keras层时,是否仍需要实现“compute_output_shape()”?_Tensorflow_Keras_Tensorflow2.0_Keras Layer_Tf.keras - Fatal编程技术网

Tensorflow 在定义自定义tf.keras层时,是否仍需要实现“compute_output_shape()”?

Tensorflow 在定义自定义tf.keras层时,是否仍需要实现“compute_output_shape()”?,tensorflow,keras,tensorflow2.0,keras-layer,tf.keras,Tensorflow,Keras,Tensorflow2.0,Keras Layer,Tf.keras,我使用TensorFlow 2.1.0在tf.keras中实现了一个自定义层 在过去,当使用独立的Keras时,在任何自定义层中定义compute\u output\u shape(input\u shape)方法非常重要,这样就可以创建计算图 现在,转到TF2之后,我发现即使我从自定义实现中删除了该方法,该层仍能按预期工作。显然,它可以在渴望模式和图形模式下工作。 这是我的意思的一个例子: 从tensorflow.keras.layers导入图层,输入 从tensorflow.keras.mo

我使用TensorFlow 2.1.0在
tf.keras
中实现了一个自定义

在过去,当使用独立的Keras时,在任何自定义层中定义
compute\u output\u shape(input\u shape)
方法非常重要,这样就可以创建计算图

现在,转到TF2之后,我发现即使我从自定义实现中删除了该方法,该层仍能按预期工作。显然,它可以在渴望模式和图形模式下工作。 这是我的意思的一个例子:

从tensorflow.keras.layers导入图层,输入
从tensorflow.keras.models导入顺序
将numpy作为np导入
类别MyLayer(层):
def呼叫(自我,输入):
返回输入[:,:-1]#执行一些更改形状的操作
m=顺序([MyLayer(),MyLayer()]))
m、 预测(np.ones((10,3))#这在过去是行不通的
可以安全地说,
compute\u output\u shape()
不再是必需的了吗?我错过了什么重要的事情吗

文档中没有明确提到删除
compute\u output\u shape()


感谢

在Tensorflow文档中没有提到它,但在本书的第12章中,自定义模型和Tensorflow培训,使用Scikit学习和Tensorflow进行机器学习的实践(Tensorflow 2的第二版更新)中提到了它,由Aurelian Geron编写,如下面的屏幕截图所示:

要回答您的问题,可以肯定地说,除非图层是动态的,否则不需要
compute\u output\u shape

这一点很明显,其中未使用
compute\u output\u shape


希望这有帮助。学习愉快

通常可以省略
compute\u output\u shape()
方法,因为tf.keras会自动推断输出形状,除非图层是动态的。在其他Keras实现中,此方法是必需的,或者其默认实现假定输出形状与输入形状相同。根据,正在使用
\uuuu init\uuuu
build
call
谢谢,这就是我要找的。你真的是Tensorflow的战士。请帮助朋友回答此问题: