По-прежнему необходимо реализовывать `compute_output_shape ()` при определении пользовательского слоя tf.keras? - PullRequest
0 голосов
/ 30 апреля 2020

Я реализовал пользовательский Layer в tf.keras, используя TensorFlow 2.1.0.

В прошлом при использовании автономных Keras было важно определить метод compute_output_shape(input_shape) в любом пользовательском слое, чтобы можно было создать вычислительный граф.

Теперь, переместившись в TF2, я обнаружил, что даже если я удалю этот метод из моей пользовательской реализации, слой все равно будет работать как положено. Судя по всему, он работает как в жадном, так и в графическом режиме. Это пример того, что я имею в виду:

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(), хотя ни один из примеров не реализует это явно.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...