如何使用r中的tensoflow CNN为keras准备data.frame

时间:2017-12-13 01:56:48

标签: r tensorflow keras

我一直在尝试在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?

2 个答案:

答案 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]]
}