我需要使用R中的大型3D数组(张量)(例如1500 x 150 x 30000)进行快速计算(+,*,>)。由于这些数组非常稀疏(只有0.03%的项为非零),因此我首先使用“ tensorr”库中的as_sptensor函数将我的张量转换为稀疏的张量,例如:
x <-array(data = c(1,0,0,0,0,0,0,1,1,1,1,1),dim = c(3,2,2))>
s <-as_dtensor(x)
s1 <-as_sptensor(s)
然后我做一些算术运算,例如乘法:
s1 * s1
我也总共有8GB的内存限制,因此也有助于我存储结果。
问题是当我处理像这样的大张量时:
一个<-some_index_matrix [1:3,1:1000000]
A2 <-sptensor(A,rep(1,ncol(A)),dims = c(max(A [1,]),max(A [2,]),max(A [3,]) ))
A2 * A2
我未能在合理的时间内获得该产品结果。如何优化我的代码,以便在几秒钟内执行此类计算?