在 Python 中处理大词嵌入矩阵

数据挖掘 Python 词嵌入
2022-02-21 04:51:11

我有一个预先训练的 Glove 词嵌入矩阵 (U),尺寸为 (400000 * 50)。现在出于查询扩展的目的,我需要执行操作 matmul(U*UT)。这是逐项相似度矩阵。但这会导致矩阵大小为 (400000*400000) 并且 Python 正在向我抛出 memoryError。

除了使用更好的机器之外,是否有解决此问题的方法?

1个回答

有很多选择。这里有几个:

  • 使用 NumPy,而不是纯 Python。确保使用优化的 BLAS 库编译 NumPy。
  • 使用像 Dask 这样的框架从磁盘一次只读取矩阵的一部分。
  • 选择不需要逆向的不同方法查询扩展。
  • 使用伪逆。
  • 选择更小的嵌入空间。
  • 降低数值的精度。