Я хочу написать несколько пользовательских Keras
слоев и выполнить некоторые сложные вычисления в слое, например, с Numpy, Scikit, OpenCV ...
Я знаю, что в keras.backend
есть некоторые математические функцииэто может работать с тензорами, но мне нужны некоторые более продвинутые функции.
Однако я понятия не имею, как правильно это реализовать, я получаю сообщение об ошибке:
You must feed a value for placeholder tensor 'input_1' with dtype float and shape [...]
Вот мой пользовательский слой:
class MyCustomLayer(Layer):
def __init__(self, **kwargs):
super(MyCustomLayer, self).__init__(**kwargs)
def call(self, inputs):
"""
How to implement this correctly in Keras?
"""
nparray = K.eval(inputs) # <-- does not work
# do some calculations here with nparray
# for example with Numpy, Scipy, Scikit, OpenCV...
result = K.variable(nparray, dtype='float32')
return result
def compute_output_shape(self, input_shape):
output_shape = tuple([input_shape[0], 256, input_shape[3]])
return output_shape # (batch, 256, channels)
Ошибка появляется в этой фиктивной модели:
inputs = Input(shape=(96, 96, 3))
x = MyCustomLayer()(inputs)
x = Flatten()(x)
x = Activation("relu")(x)
x = Dense(1)(x)
predictions = Activation("sigmoid")(x)
model = Model(inputs=inputs, outputs=predictions)
Спасибо за все подсказки ...