Я наткнулся на некоторый код Keras в сиамской сети, где два ndarrays каждого размера (?, 128) передаются в слой, чтобы получить разницу между ними, а затем в слой Lambda, чтобы получить квадрат квадратов суммы Полученный массив, цель этого состоит в том, чтобы получить евклидово расстояние между двумя начальными массивами
embedded_distance = layers.Subtract(name='subtract_embeddings')([encoded_1, encoded_2])
embedded_distance = layers.Lambda(lambda x: K.sqrt(K.sum(K.square(x), axis=-1, keepdims=True)), name='euclidean_distance')(embedded_distance)
, что смущает то, что В визуальной архитектуре модели выходной размер этого слоя, а также входной размер следующего плотного слоя также имеет размер (?, 128), разве это не должно быть просто числом? Или как работает метод sum?
Вот ссылка на класс, если кому-то это интересно, а также визуальная архитектура. (примечание: этот код не изменен мной, и он работает, поскольку я обучил модель с ним)
http://codebin.herokuapp.com/?s=5e162c612cdd6f0004000001
https://imgur.com/a/zC7Uyfm