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