Я следую учебнику
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