我正在尝试从我们群集上的大型数据集(大约50GB)训练单词向量,但我不确定训练是否会终止。
日志显示alpha
实际上不变小,因为我认为应该:
...
16/04/13 17:19:01 INFO feature.Word2Vec: wordCount = 17974000, alpha = 0.5506481187235711
16/04/13 17:19:02 INFO feature.Word2Vec: wordCount = 17985000, alpha = 0.5506791151242587
16/04/13 17:19:02 INFO feature.Word2Vec: wordCount = 17996000, alpha = 0.5507101115249463
16/04/13 17:19:03 INFO feature.Word2Vec: wordCount = 18007000, alpha = 0.550741107925634
16/04/13 17:19:04 INFO feature.Word2Vec: wordCount = 18018000, alpha = 0.5507721043263216
16/04/13 17:19:05 INFO feature.Word2Vec: wordCount = 18029000, alpha = 0.5508031007270092
以下是更新Word2Vec#fit()
的{{1}}函数的一部分。您可以看到alpha
的下限是alpha
。
learningRate * 0.0001
alpha = learningRate *
(1 - numPartitions * wordCount.toDouble / (trainWordsCount + 1))
if (alpha < learningRate * 0.0001) {
alpha = learningRate * 0.0001
}
logInfo("wordCount = " + wordCount + ", alpha = " + alpha)
(此处为learningRate
)似乎与0.5
(此处numPartitions
)一样不变。 1
就我所说的词汇大小而言,似乎也是不变的。唯一正在改变的是trainWordsCount
随着时间的推移而不断增长。
这意味着
wordCount
然后numPartitions * wordCount.toDouble >= trainWordsCount + 1
会变得更大。
我不确定这是否真的是一个问题,但我在某个地方变红,它实际上应该变小。目前我也不确定这是不是一个错误,如果这确实没问题,或者我做错了什么。
有人可以向我解释我能/期望从这个功能中得到什么? 如果您需要更多信息,请与我们联系。
如果需要,我可以提供整个代码,但这是必不可少的部分:
alpha