用TensorFlow实现R中的逐次矩阵乘法

用TensorFlow实现R中的逐次矩阵乘法,r,matrix,tensorflow,R,Matrix,Tensorflow,一个简单的问题 假设我有一个m x m矩阵mat,我想把它提升到n的幂,意思是mat%*%mat%*%mat%*%。。。假设我想保留所有的中间产品 要使用tensorflow解决此问题,因为我希望使用GPU使其高效,那么代码是: 还是我没有恰当地使用tensorflow?您尝试过expm库吗 我正在处理的真实数据的维度非常大,因此我希望它在GPU上运行,因此使用TensorFlow的原因您尝试过gpuR包吗?如果您将矩阵设置为GPU对象,它应该将来自其他软件包(例如expm)的命令定向到GPU。

一个简单的问题

假设我有一个m x m矩阵mat,我想把它提升到n的幂,意思是mat%*%mat%*%mat%*%。。。假设我想保留所有的中间产品

要使用tensorflow解决此问题,因为我希望使用GPU使其高效,那么代码是:

还是我没有恰当地使用tensorflow?

您尝试过expm库吗


我正在处理的真实数据的维度非常大,因此我希望它在GPU上运行,因此使用TensorFlow的原因您尝试过gpuR包吗?如果您将矩阵设置为GPU对象,它应该将来自其他软件包(例如expm)的命令定向到GPU。但现在我也很好奇是否可以在tensorflow中实现:我认为使用R的tensorflow可能更简单如果你的问题是关于速度的,答案是基准测试。
library(tensorflow)
set.seed(1)
m <- 9 #in my real data m is pretty big though
mat <- matrix(rnorm(m*m),m,m)
tf.mat <- tf$constant(mat)
tf.prod.mat <- tf$constant(mat)
n <- 4
prod.list <- vector(mode="list",n)
for(i in 1:n){
  mat.mat.prod <- tf$matmul(tf.prod.mat,tf.mat)
  sess <- tf$Session()
  prod.list[[i]] <- sess$run(mat.mat.prod)
  tf.prod.mat <- tf$constant(prod.list[[i]])
}
sess$close()
> library(expm)
> mat %^% 2  # raise to power of 2