gpt4 book ai didi

tensorflow - 定义自定义tf.keras层时是否还需要实现 `compute_output_shape()`?

转载 作者:行者123 更新时间:2023-12-03 21:56:50 24 4
gpt4 key购买 nike

我已经实现了一个自定义 Layertf.keras ,使用 TensorFlow 2.1.0。

过去,在使用独立的 Keras 时,定义 compute_output_shape(input_shape) 很重要。任何自定义层中的方法,以便可以创建计算图。

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

from tensorflow.keras.layers import Layer, Input
from tensorflow.keras.models import Sequential
import numpy as np


class MyLayer(Layer):
def call(self, inputs):
return inputs[:, :-1] # Do something that changes the shape


m = Sequential([MyLayer(), MyLayer()])
m.predict(np.ones((10, 3))) # This would not have worked in the past

可以这么说 compute_output_shape()不再需要了吗?我错过了什么重要的东西吗?

在文档中没有明确提到删除 compute_output_shape() ,尽管没有一个示例明确实现它。

谢谢

最佳答案

Tensorflow 文档中没有提到它,而是在 中提到。第12章 , 使用 TensorFlow 定制模型和训练 书,使用 Scikit-Learn 和 Tensorflow 进行机器学习实践(针对 Tensorflow 2 更新第 2 版)由 Aurelien Geron 撰写的 O'RIELLY Publications 中提到,如下面的屏幕截图所示:

enter image description here

要回答您的问题,是的,可以安全地说 compute_output_shape除非图层是动态的,否则不需要。

从这个 Tensorflow Tutorial on Custom Layer 可以明显看出这一点哪里compute_output_shape未使用。

希望这可以帮助。快乐学习!

关于tensorflow - 定义自定义tf.keras层时是否还需要实现 `compute_output_shape()`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61522019/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com