我正在关注一个教程 http://adventuresinmachinelearning.com/word2vec-keras-tutorial/ 它使用余弦相似度作为验证模型,但将点积(不同于余弦相似度进行标准化)进行训练。确实令人困惑,但是我的问题是关于点积的轴,对于验证模型是:
similarity = merge([target, context], mode='cos', dot_axes=0)
因此,当我记录验证模型的模型摘要时,会得到:
图层(类型)输出形状
dot_1(点)(300、1、1)
但用于训练模型
dot_product = merge([target, context], mode='dot', dot_axes=1)
不足为奇的是,模型摘要显示了另一件事
图层(类型)输出形状
dot_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