![f4c3f3c819aa1a9b17c6de98bbf07cdf.png](https://i-blog.csdnimg.cn/blog_migrate/ed356fe36e3a35ab9d563788ec75467b.jpeg)
Tensorflow矩阵相乘
- 大规模稀疏矩阵相乘
当使用稀疏矩阵相乘tf.sparse_tensor_dense_matmul时,如果稀疏矩阵过大,会报出
Cannot use GPU when output.shape[1] * nnz(a) > 2^31
此时,可将稀疏矩阵转为密集矩阵做乘法
dense_input_a = tf.sparse_tensor_to_dense(input_a)
output = tf.matmul(dense_input_a, input_b, a_is_sparse = True)
解决方案出自[1]
- 同时,在将稀疏矩阵转为密集矩阵时,如果indices不是递增的,会报类似错误
indices[1] = [2740,0] is out of order
如果要解决这个问题可以设置validate_indices=False,关闭这个功能。
dense=tf.sparse_to_dense(input_a,validate_indices=False)
解决方案出自[2]
参考
- ^stackoverflow https://stackoverflow.com/questions/57687200/how-to-multiply-very-large-sparse-matrix-in-tensorflow
- ^csdn https://blog.csdn.net/ziliwangmoe/article/details/81318880