Как будет использоваться расстояние L1 при обучении нейронной сети схожести изображений? - PullRequest
1 голос
/ 01 октября 2019

Я реализую нейронную сеть, которая находит сходство между двумя изображениями, независимо от того, схожи они или нет.

Ссылка: https://www.kaggle.com/arpandhatt/siamese-neural-networks/data

Каждый пример содержит ([image_1, image_2], label). Где метка имеет значение 0, если они похожи, и 1 для различий.

Сетевой коннет состоит из серии сверток, за которыми следуют пулы слоев и выводит вектор признаков.

В реализации они вычисляют расстояние L1 между кодировками и добавляют плотный слой для окончательного решения.

encoded_l = convnet(left_input)
encoded_r = convnet(right_input)

# Getting the L1 Distance between the 2 encodings
L1_layer = Lambda(lambda tensor:K.abs(tensor[0] - tensor[1]))

# Add the distance function to the network
L1_distance = L1_layer([encoded_l, encoded_r])

prediction = Dense(1,activation='sigmoid')(L1_distance)
siamese_net = Model(inputs=[left_input,right_input],outputs=prediction)

Ответы, которые я ищу:

  • Как будет использоваться это расстояние L1 во время обучения сети.

  • Какие есть другие опции, кроме расстояния L1, для измерения сходства между двумя кодировками?

Надеюсь, если я смогу получить эти ответы, я смогу настроить сеть в соответствии с моими требованиями.

...