TypeError: ufunc 'add' did not contain a loop with signature matching types dtype
TypeError: ufunc 'add' did not contain a loop with signature matching types dtype
我想将 X_train_word2vec
向量作为输入传递给 Gensim Word2Vec
模型。
向量类型为 numpy.ndarray
,例如:
X_train_word2vec[9] = array([ 19, 7, 1, 20120, 2, 1, 856, 233, 671,
1, 1208, 6016, 2, 32, 0, 0, 0, 0, ....)]
当我运行这段代码时:
model_word2vec = models.Word2Vec(X_train_word2vec, size=150, window=9)
model_word2vec.train(X_train_word2vec,total_examples=X_train_word2vec.shape[0], epochs=10)
我收到这个错误:
TypeError: ufunc 'add' did not contain a loop with signature matching types dtype('<U11') dtype('<U11') dtype('<U11')
我已阅读 post,其中问题是由于输入数组中的数据类型不同,但在我的例子中,我拥有相同类型的所有数据:int
.
更新:
model_Word2Vec
之前的代码:
tokenizer = Tokenizer()
tokenizer.fit_on_texts(X)
sequence = tokenizer.texts_to_sequences(X)
seq_max_len = 50
X_seq = pad_sequences(sequenza, maxlen=seq_max_len,padding='post',truncating='post',dtype=int)
X_train_word2vec, X_test_word2vec, y_train_word2vec, y_test_word2vec = train_test_split(X_seq, y_cat, test_size=0.2, random_state=123)
Gensim 的 Word2Vec
需要一个文本语料库——例如在它的初始化器的第一个参数中——这是一个字符串标记列表的可迭代序列对象。它不需要原始的 numpy 数组。
此外,如果您确实在实例化时提供了一个语料库,就像在您的代码行中一样...
model_word2vec = models.Word2Vec(X_train_word2vec, size=150, window=9)
...然后它会自动执行词汇构建和训练步骤。然后您不需要显式调用 train()
。 (而且,虽然可以再次调用 train()
,但很少有用户在做非常高级的事情时需要这样做。通常、安全的方法是在完整的语料库上进行一次训练,之后模型是 "done".)
最后,train()
还期望任何语料库都是字符串标记列表的可迭代序列对象。
如果您提供了正确类型的语料库,您很可能会收到像现在这样的错误。
我想将 X_train_word2vec
向量作为输入传递给 Gensim Word2Vec
模型。
向量类型为 numpy.ndarray
,例如:
X_train_word2vec[9] = array([ 19, 7, 1, 20120, 2, 1, 856, 233, 671,
1, 1208, 6016, 2, 32, 0, 0, 0, 0, ....)]
当我运行这段代码时:
model_word2vec = models.Word2Vec(X_train_word2vec, size=150, window=9)
model_word2vec.train(X_train_word2vec,total_examples=X_train_word2vec.shape[0], epochs=10)
我收到这个错误:
TypeError: ufunc 'add' did not contain a loop with signature matching types dtype('<U11') dtype('<U11') dtype('<U11')
我已阅读 int
.
更新:
model_Word2Vec
之前的代码:
tokenizer = Tokenizer()
tokenizer.fit_on_texts(X)
sequence = tokenizer.texts_to_sequences(X)
seq_max_len = 50
X_seq = pad_sequences(sequenza, maxlen=seq_max_len,padding='post',truncating='post',dtype=int)
X_train_word2vec, X_test_word2vec, y_train_word2vec, y_test_word2vec = train_test_split(X_seq, y_cat, test_size=0.2, random_state=123)
Gensim 的 Word2Vec
需要一个文本语料库——例如在它的初始化器的第一个参数中——这是一个字符串标记列表的可迭代序列对象。它不需要原始的 numpy 数组。
此外,如果您确实在实例化时提供了一个语料库,就像在您的代码行中一样...
model_word2vec = models.Word2Vec(X_train_word2vec, size=150, window=9)
...然后它会自动执行词汇构建和训练步骤。然后您不需要显式调用 train()
。 (而且,虽然可以再次调用 train()
,但很少有用户在做非常高级的事情时需要这样做。通常、安全的方法是在完整的语料库上进行一次训练,之后模型是 "done".)
最后,train()
还期望任何语料库都是字符串标记列表的可迭代序列对象。
如果您提供了正确类型的语料库,您很可能会收到像现在这样的错误。