Как выполняется косинусное сходство в этой реализации Keras word2vec? - PullRequest
0 голосов
/ 18 ноября 2018

Я следую учебнику http://adventuresinmachinelearning.com/word2vec-keras-tutorial/ который использует косинусное сходство для модели валидации, но точечный продукт (не нормированный в отличие от косинусного сходства) для обучения. Это действительно сбивает с толку, но мой вопрос о продукте оси, для модели проверки это:

similarity = merge([target, context], mode='cos', dot_axes=0)

в результате, когда я регистрирую сводку модели для модели проверки, я получаю:

Слой (тип) Форма выхода

точка_1 (точка) (300, 1, 1)

но для тренировочной модели

dot_product = merge([target, context], mode='dot', dot_axes=1)

неудивительно, что краткое изложение модели показывает другое

Слой (тип) Форма выхода

точка_2 (точка) (нет, 1, 1)

Я прочитал 'Ouput' в сводке (значение которого обычно отсутствует) показывает размер пакета (если он по какой-то причине фиксирован), но мне все равно не имеет смысла, почему это 300 для первой модели, потому что я думаю, что размер пакета в этом примере не является фиксированным, и 300 также является моим размером встраивания. Ясно, что что-то не так, dot_axes, кто-нибудь может подтвердить? Должен ли я просто исправить это, поставив dot_axes=1 вместо нуля? Почему первая ось 1, а не 0? dot_axes=0 укажет размер пакета или что-то (не имеет смысла для меня)?

код на github: https://github.com/adventuresinML/adventures-in-ml-code/blob/master/keras_word2vec.py

...