我一直在尝试在keras中为CNN准备火车数据集,但我找不到正确设置数据的方法。
在keras CNN example中,他们使用MNIST数据集,其中包括:
library(keras)
img_rows <- 28
img_cols <- 28
mnist <- dataset_mnist()
x_train <- mnist$train$x
x_train <- array_reshape(x_train, c(nrow(x_train), img_rows, img_cols, 1))
使用此暗淡输出数组:
class(x_train)
[1] "array"
dim(x_train)
[1] 60000 28 28 1
我有一个这样的数据框:
x = data.frame(c(1,10,19,28),c(2,11,20,29),c(3,12,21,30),c(4,13,22,31),c(5,14,23,32),c(6,15,24,33),c(7,16,25,34),c(8,17,26,35),c(9,18,27,36))
每行代表一个像这样的3x3图像:
1 2 3
4 5 6
7 8 9
我正在尝试这个:
x = as.integer(unlist(x))
x = array_reshape(x, c(4,3,3, 1))
这返回3个具有扰码的矩阵。 ¿如何在keras中正确转换我的data.frame for CNN?
答案 0 :(得分:0)
如果我了解您正在尝试做什么,请将您的训练数据(x
)重塑为4个元素的数组,每个元素包含3x3矩阵。如果事实确实如此,那么试试这个,
> aperm(array(t(x), dim = c(3, 3, 4)), perm = c(2,1,3))
, , 1
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
, , 2
[,1] [,2] [,3]
[1,] 10 11 12
[2,] 13 14 15
[3,] 16 17 18
, , 3
[,1] [,2] [,3]
[1,] 19 20 21
[2,] 22 23 24
[3,] 25 26 27
, , 4
[,1] [,2] [,3]
[1,] 28 29 30
[2,] 31 32 33
[3,] 34 35 36
答案 1 :(得分:0)
这可能会有所帮助:
# Create an empty array the size you want
x_array <- array(NA, dim = c(3, 3, length(x)))
# Loop in each object of your list into the array
for (i in length(x)) {
x_array[,, i] <- x[[i]]
}