我们正试图找到一种解决方案,在非常非常大且非常稀疏的最小二乘问题上实现随机梯度下降(或坐标梯度下降)。也就是说,对于标准最小二乘问题:
min || y - Axe || 2
矩阵A大约十亿行和十亿列,但它是99%稀疏。同样,系数向量x约为98%稀疏,观察向量Y也约为97%稀疏。
然而,虽然我知道张量流具有随机梯度下降函数,但我不清楚梯度下降函数是否接受稀疏矩阵/向量,即使它们这样做,也不清楚幕后这些梯度下降库是否最终会转换将稀疏矩阵和向量转换成密集表示,然后将以稀疏格式输入数据开始。如果tensorflow的梯度下降方法将所有内容转换为密集格式,我们会轻易地炸毁内存并且还会破坏性能(因为我们将为所有这些零值进行大约100 * 100次计算。)
如果SGD算法隐式地将稀疏矩阵和向量转换为密集对应物,那么将该逻辑更改为仅稀疏逻辑有多难?如果,一个知识渊博的python / C ++工程师(有一些张量流知识)可以做到这一点,还是一个重要的架构重写?