如何在R中创建一个矩阵数组,就像dataset_mnist()中的数据一样?(keras)

gev0vcfq  于 2022-11-24  发布在  其他
关注(0)|答案(2)|浏览(130)

我想创建我自己的(N x N)矩阵数组,该数组与用dataset_mnist()加载的keras兼容格式相匹配。

mnist <- dataset_mnist()
x_train <- mnist$train$x
str (x_train)

收益率

int [1:60000, 1:28, 1:28] 0 0 0 0 0 0 0 0 0 0 ...

我想把我自己的数据做成这样的格式,假设我有2000个不同的100 x100整数矩阵:mat 1,mat 2,mat 3,mat 4... mat 2000。如何将它们组合起来以生成具有以下结构的对象:

int [1:2000, 1:100, 1:100] ...

然后我可以用它作为Keras模型的输入数据
我试过了:

as.vector (c(mat1, mat2))
as.array (c(mat1, mat2))
rbind (mat1, mat2)

但是它不能产生正确结构的数据。谢谢你的帮助!

m1m5dgzv

m1m5dgzv1#

c oncatenate您的矩阵,并使arrayc oncatenate矩阵维度和第三个dim维度,这是矩阵的数目。* 范例:*

m1 <- matrix(1, 2, 3)
m2 <- matrix(2, 2, 3)
m3 <- matrix(3, 2, 3)

array(c(m1, m2, m3), c(dim(m1), 3))
# , , 1
# 
#      [,1] [,2] [,3]
# [1,]    1    1    1
# [2,]    1    1    1
# 
# , , 2
# 
#      [,1] [,2] [,3]
# [1,]    2    2    2
# [2,]    2    2    2
# 
# , , 3
# 
#      [,1] [,2] [,3]
# [1,]    3    3    3
# [2,]    3    3    3
flvtvl50

flvtvl502#

你也可以看看包listarrays。

m <- matrix(1:4, ncol = 2)
listarrays::bind_as_rows(m, m, m) |> str()
# int [1:3, 1:2, 1:2] 1 1 1 2 2 2 3 3 3 4 ...

相关问题