Я пытаюсь разработать слой в Keras, который работает с 3D-тензорами. Чтобы сделать его более гибким, я бы хотел как можно больше отложить код, основанный на точной форме ввода.
Мой слой переопределяет 5 методов:
from tensorflow.python.keras.layers import Layer
class MyLayer(Layer):
def __init__(self, **kwargs):
pass
def build(self, input_shape):
pass
def call(self, inputs, verbose=False):
second_dim = K.int_shape(inputs)[-2]
# Do something with the second_dim
def compute_output_shape(self, input_shape):
pass
def get_config(self):
pass
И яиспользуя этот слой следующим образом:
input = Input(batch_shape=(None, None, 128), name='input')
x = MyLayer(name='my_layer')(input)
model = Model(input, x)
Но я сталкиваюсь с ошибкой, поскольку second_dim
равен None
. Как я могу разработать слой, который основан на размерах входных данных, но это нормально, если он предоставляется фактическими данными, а не входным слоем?