Python 3.x fasttext在训练后生成不同的向量

Python 3.x fasttext在训练后生成不同的向量,python-3.x,machine-learning,nlp,fasttext,Python 3.x,Machine Learning,Nlp,Fasttext,以下是我的培训: import fasttext model = fasttext.train_unsupervised('data.txt', model='skipgram') 现在,让我们观察第一个向量(为了可读性,省略了完整的输出) 另一方面,让我们在模型中输入第一个字符串: model[data.iloc[0]] # array([ 0.10782535, 0.3055557 , 0.19097836, -0.15849613, 0.14204402 我们得到一个不同的向量

以下是我的培训:

import fasttext

model = fasttext.train_unsupervised('data.txt', model='skipgram')
现在,让我们观察第一个向量(为了可读性,省略了完整的输出)

另一方面,让我们在模型中输入第一个字符串:

model[data.iloc[0]]

# array([ 0.10782535,  0.3055557 ,  0.19097836, -0.15849613, 0.14204402
我们得到一个不同的向量


为什么?

你应该解释更多关于
数据的结构。顺便说一下,当您使用
model[data.iloc[0]]
时,它相当于
model.get\u word\u vector(data.iloc[0])
。所以,你应该向模特说几句话


另一方面,
model.get\u input\u vector(0)
可能会向模型输入一个句子。因此,如果
data.iloc[0]
是一个句子,您可以将
model.get\u input\u vector(0)
的结果与
model.get\u句子\u vector(data.iloc[0])
进行比较。否则,您应该获取数据中要输入到
模型的第一个单词,然后比较它们的向量。

是的,
data.iloc[0]
确实是一个句子。我按照你的回答进行了比较,但奇怪的是,仍然有所不同vectors@Elimination您的意思是将
data.iloc[0]
的第一个字传递给
模型
?请记住,您可以将
data.iloc[0]
传递到
model。获取句子向量,然后比较结果。不,我要传递整个句子。这是我的比较。(1) 
模型。获取句子向量(data.iloc[0])
(2)
模型。获取输入向量(0)
。为什么它们不同?为了更好地理解这个问题,你应该发布一个数据样本。在任何情况下,您确定第一个输入向量与第一行数据相同吗?@请让我们知道
data.iloc[0]
by
model.get\u word\u vector
model[data.iloc[0]]

# array([ 0.10782535,  0.3055557 ,  0.19097836, -0.15849613, 0.14204402