【问题标题】:r keras: ValueError: Error when checking target: expected dense_18 to have shape (None, 6)r keras:ValueError:检查目标时出错:预期dense_18具有形状(无,6)
【发布时间】: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 列? 非常感谢!

【问题讨论】:

    标签: r keras


    【解决方案1】:

    我认为这是因为您的标签在 [1, 7] 范围内,但对于 to_categorical,您的标签应该在 [0, 6] 范围内。

    question 相同。

    最简单的解决方法是从 0 开始枚举标签: Y = Y - 1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-29
      • 2018-07-29
      • 1970-01-01
      • 2019-07-05
      • 2018-09-18
      相关资源
      最近更新 更多