You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FastText词向量映射报错:无法将(300,)形状广播至(16,)形状

解决FastText词向量与嵌入矩阵维度不匹配的ValueError

问题原因

错误提示could not broadcast input array from shape (300,) into shape (16,)直接说明维度不匹配:

  • 你加载的僧伽罗语FastText预训练模型cc.si.300.bin是300维的词向量
  • 但你初始化embeddings_matrix时用的embedding_dim设为了16,导致矩阵每行只能容纳16维数据,无法放入300维的词向量

修复步骤

  1. 对齐嵌入维度:将embedding_dim设置为预训练模型的实际维度(300),最好直接通过模型获取,避免手动输入错误
  2. 移除无效判断:FastText的get_word_vector()方法永远不会返回None,无需额外判断
  3. 重新初始化嵌入矩阵

修正后的代码

import fasttext
import fasttext.util
import numpy as np

# 加载僧伽罗语预训练FastText模型
ft = fasttext.load_model("cc.si.300.bin")
# 直接从模型获取词向量维度,确保一致性
embedding_dim = ft.get_dimension()

# 初始化嵌入矩阵:(词汇表大小+1, 300)
embeddings_matrix = np.zeros((vocab_size + 1, embedding_dim))
# 映射词汇到预训练向量
for word, i in word_index.items():
    embedding_vector = ft.get_word_vector(word)
    embeddings_matrix[i] = embedding_vector

额外提示

如果你的LSTM模型确实需要16维的输入嵌入,不要强行把300维向量塞进16维矩阵。可以用PCA、t-SNE等降维方法将300维向量压缩到16维,但这会丢失部分语义信息,优先推荐使用预训练向量的原始300维维度来构建嵌入层。

内容的提问来源于stack exchange,提问作者Rusiru Wijethilake

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 11:55:09