1

Gensim Doc2vec モデルを使用してドキュメント ベクトルをトレーニングします。「良い」という単語の表現を印刷しましたが、すべてのエポックが見つかりました。更新されていないことがわかりました! ID「3」のドキュメントの表現を印刷しましたが、エポックごとに異なります!

私のコードは以下のとおりです。何が起こっているのかわかりません。

model = gensim.models.Doc2Vec(dm = 0, alpha=0.1, size= 20, min_alpha=0.025)

model.build_vocab(documents)

print ('Building model....',(time4-time3))
for epoch in range(10):
    model.train(documents)

    print('Now training epoch %s' % epoch)
    print(model['good'])
    print(model.docvecs[str(3)])
4

3 に答える 3

1

これは、更新のたびに表現をチェックする正しい方法ではありません。Gensimdoc2veciterパラメーターを使用して、エポックの数を定義します ( docsを参照)。そのdefault値は 5 です。

基本的に、次のループで何が起こっているか:

for epoch in range(10):
    model.train(documents)

モデルをゼロから 5 エポックまで 10 回トレーニングしています。

Gensim では現在、エポックごとに表現をチェックすることは許可されていないと思います。それを行う1つの大雑把な方法は次のとおりです。

model.train(documents, iter=1)
print('Now training epoch %s' % epoch)
print(model['good'])
print(model.docvecs[str(3)])

model.train(documents, iter=2)
print('Now training epoch %s' % epoch)
print(model['good'])
print(model.docvecs[str(3)])
于 2016-08-11T12:44:23.553 に答える
0

すべてのエポックgensimで、最初に単語ベクトルにランダムな値を使用してから、モデルのトレーニングを開始します。doc2vec(またはword2vec)では、単語(exp。「良い」)のすべての最終単語ベクトルが同じであってはなりませんが、類似の単語は類似の単語ベクトルです。たとえば、あるエポックでは次のようになります。

model['good'] = [0.22 0.52 0.36]
model['better'] = [0.24 0.50 0.39]

そして別のエポックでは:

model['good'] = [0.58 0.96 0.24]
model['better'] = [0.59 0.90 0.21]
于 2016-08-15T09:45:14.133 に答える