计算张量积的R向量内存耗尽

计算张量积的R向量内存耗尽,r,R,我正在RStudio(3.5.2版)中计算60000对28*28矩阵的张量积,控制台显示“错误:向量内存耗尽(达到限制?)。我不认为我的MacBookPro会有如此低的容量(16GB内存)。我尝试了用于并行计算的mclappy方法,但仍然不起作用。有人能给我一些见解吗?非常感谢 如有必要,以下是我的代码。我跑不完最后一行 install.packages("keras") library(keras) install_keras() install_keras(method

我正在RStudio(3.5.2版)中计算60000对28*28矩阵的张量积,控制台显示“错误:向量内存耗尽(达到限制?)。我不认为我的MacBookPro会有如此低的容量(16GB内存)。我尝试了用于并行计算的
mclappy
方法,但仍然不起作用。有人能给我一些见解吗?非常感谢

如有必要,以下是我的代码。我跑不完最后一行

install.packages("keras")
library(keras)
install_keras()
install_keras(method = "conda")

library(keras)
mnist <- dataset_mnist()
str(mnist)

trainx <- mnist$train$x
trainy <- mnist$train$y
testx <- mnist$test$x
testy <- mnist$test$y

trainxr <- trainx
trainxg <- trainx
trainxb <- trainx
testxr <- testx
testxg <- testx
testxb <- testx

#training data
i <- 1
for(i in i:60000){
  randomr <- sample (0:255, 1)
  randomg <- sample (0:255, 1)
  randomb <- sample (0:255, 1)
  trainxr[i,,] <- (randomr/255)*(trainx[i,,]/255)
  trainxg[i,,] <- (randomg/255)*(trainx[i,,]/255)
  trainxb[i,,] <- (randomb/255)*(trainx[i,,]/255)
  i <- i+1
}

#testing data
j <- 1
for(j in j:10000){
  randomr <- sample (0:255, 1)
  randomg <- sample (0:255, 1)
  randomb <- sample (0:255, 1)
  testxr[j,,] <- (randomr/255)*(testx[j,,]/255)
  testxg[j,,] <- (randomg/255)*(testx[j,,]/255)
  testxb[j,,] <- (randomb/255)*(testx[j,,]/255)
  j <- j+1
}

#for training
k <- 1
for(k in k:60000){
  randomminus <- sample (0:255, 1)
  matrixminus <- matrix((randomminus/255):(randomminus/255), nrow = 28, ncol = 28)
  trainxr[k,,] <- trainxr[k,,] - matrixminus
  trainxr[k,,] <- abs(trainxr[k,,])
  trainxg[k,,] <- trainxg[k,,] - matrixminus
  trainxg[k,,] <- abs(trainxg[k,,])
  trainxb[k,,] <- trainxb[k,,] - matrixminus
  trainxb[k,,] <- abs(trainxb[k,,])
  k <- k+1
}

#for testing
l <- 1
for(l in l:10000){
  randomminus <- sample (0:255, 1)
  matrixminus <- matrix((randomminus/255):(randomminus/255), nrow = 28, ncol = 28)
  trainxr[l,,] <- trainxr[l,,] - matrixminus
  trainxr[l,,] <- abs(trainxr[l,,])
  trainxg[l,,] <- trainxg[l,,] - matrixminus
  trainxg[l,,] <- abs(trainxg[l,,])
  trainxb[l,,] <- trainxb[l,,] - matrixminus
  trainxb[l,,] <- abs(trainxb[l,,])
  l <- l+1
}

#tensor product
stepone <- matrix(1:1, nrow=21952, ncol=28)
steptwo <- matrix(1:1, nrow=28, ncol=28)
trainxtensor_a <- trainxr %x% trainxg
install.packages(“keras”)
图书馆(keras)
安装_keras()
安装_keras(方法=“康达”)
图书馆(keras)

mnist我猜你打算在张量积中折叠第二和第三维度。也许你想要这样的东西:

library(tensor)
trainxtensor_a <- tensor(trainxr, trainxg, c(2,3), c(2,3))
库(张量)

列车调度员这是否回答了您的问题尝试将
R\u MAX\u VSIZE=100Gb
添加到您的
.Renviron
谢谢您的回复,用户438383。我尝试过这种方法,但没有成功:(如果你有无限的资源,最后一行的输出将是一个60000^2乘784乘784的数组,这是相当大的。这真的是你所期望的吗?非常感谢!只是一个小问题:“tensor”是我应该安装的包吗,比如
install.packages(“tensor”)
然后是
库(tensor)
?当我使用该软件包时,环境似乎没有任何反应。再次感谢您的努力!是的,使用
安装.软件包(“tensor”)
在库调用之前安装它,库调用刚刚加载它。你也可以通过菜单“工具”->“在RStudio中安装软件包”进行安装。如果你经常使用R,你将安装很多软件包……实际上我的计算机运行了一个多小时
trainxtensor_a <- tensor(trainxr[1:5,,], trainxg[1:5,,], c(2,3), c(2,3))