ValueError:操作数无法与形状(11384)(96,)(11384)一起广播

2024-06-28 20:34:22 发布

您现在位置:Python中文网/ 问答频道 /正文

nlp = spacy.load('en_core_web_sm')

vecs1 = [] <br>
for qu1 in tqdm(list(train_df['question1'])):<br>
    doc1 = nlp(qu1) <br>
    mean_vec1 = np.zeros([len(doc1), 384])<br>
    for word1 in doc1:<br>
        vec1 = word1.vector<br>
        try: <br>
            idf = word2tfidf[str(word1)]<br>
        except:<br>
            idf = 0<br>
        # compute final vec<br>
        mean_vec1 += (vec1 * idf)<br>
    mean_vec1 = mean_vec1.mean(axis=0)<br>
    vecs1.append(mean_vec1)<br>
train_df['q1_feats_m'] = list(vecs1)

我得到了上面代码的这个错误


ValueError Traceback (most recent call last) in ()
18 idf = 0
19 # compute final vec
---> 20 mean_vec1 += (vec1 * idf)
21 mean_vec1 = mean_vec1.mean(axis=0)
22 vecs1.append(mean_vec1)

ValueError: operands could not be broadcast together with shapes (11,384) (96,) (11,384)


Tags: inbrdffornlpdoc1trainmean
1条回答
网友
1楼 · 发布于 2024-06-28 20:34:22

我张贴在这里,以允许整个代码被粘贴。你知道吗

不知道你的数据很难说。添加以下打印命令行以验证阵列的形状。从错误看来,你的vec1(96,)和idf(11384)是不能相乘的!你知道吗

nlp = spacy.load('en_core_web_sm')

vecs1 = []
for qu1 in tqdm(list(train_df['question1'])):
    doc1 = nlp(qu1)
    mean_vec1 = np.zeros([len(doc1), 384])
    for word1 in doc1:
        vec1 = word1.vector
        try: 
            idf = word2tfidf[str(word1)]
        except:
            idf = 0

        # Debug Prints
        print("idf Shape: %s" %idf.shape)
        print("vec1 Shape: %s" %vec1.shape)
        print("mean_vec1 Shape: %s" %mean_vec1.shape)


        # compute final vec
        mean_vec1 += (vec1 * idf)
    mean_vec1 = mean_vec1.mean(axis=0)
    vecs1.append(mean_vec1)
train_df['q1_feats_m'] = list(vecs1)

相关问题 更多 >