【发布时间】:2018-09-27 00:08:38
【问题描述】:
我正在 r 中测试 keras。 8 个数字预测变量和一个包含 6 个类别的分类响应变量。
我知道我的例子是荒谬的 - 但我只是想了解为什么 keras 没有运行 - 为什么我会收到这个错误:
py_call_impl(callable, dots$args, dots$keywords) 中的错误: ValueError: 检查目标时出错:预期 dense_18 具有形状 (None, 6) 但得到的数组具有形状 (1500, 7)
# Create an artificial example with a categorical response variable:
set.seed(123)
y <- sample(1:6, 2000, replace = TRUE)
set.seed(1234)
x <- as.data.frame(matrix(rnorm(2000 * 8), nrow = 2000))
str(y)
str(x)
# Create a train-test split:
library(caret)
set.seed(12)
forTrain <- createDataPartition(y, p = 0.74887, list = FALSE)
x.train <- x[forTrain, ]
x.test <- x[-forTrain, ]
y.train <- y[forTrain]
y.test <- y[-forTrain]
dim(x.train)[1] == length(y.train)
length(y.train); length(y.test)
# Build network:
library(keras)
network <- keras_model_sequential() %>%
layer_dense(units = 100, activation = "relu", input_shape = c(1 * 8)) %>%
layer_dense(units = 6, activation = "softmax")
network %>% compile(
optimizer = "rmsprop",
loss = "categorical_crossentropy",
metrics = c("accuracy")
)
# Transform inputs:
x.train <- as.matrix(x.train)
x.test <- as.matrix(x.test)
x.train <- array_reshape(x.train, c(1500, 1 * 8))
x.test <- array_reshape(x.test, c(500, 1 * 8))
y.train <- to_categorical(y.train)
y.test <- to_categorical(y.test)
# Try to train:
network %>% fit(x.train, y.train, epochs = 5, batch_size = 25)
或者错误是因为 to_categorical 出于某种原因创建了 7 列? 非常感谢!
【问题讨论】: