试图解决keras中的数据维度不匹配

jeb*_*nes 5 r keras

我正在测试一个模型,然后再让它撕开一个完整的数据集。我的数据是数组中的 RGB 图像,因此,我的训练数据集目前具有以下维度

> dim(ff_train)
[1]  10 500 500   3
Run Code Online (Sandbox Code Playgroud)

因此,10 张图像,每张 500x500 具有 3 个颜色层 (RGB)。

我的测试数据是一样的

> dim(ff_test)
[1]  10 500 500   3
Run Code Online (Sandbox Code Playgroud)

我已经像这样设置了我的模型:



model <- keras_model_sequential() %>%
  layer_dense(units = 16, activation = "relu", 
              input_shape = c(10)) %>%
  layer_dense(units = 16, activation = "relu") %>%
  layer_dense(units = 1, activation = "sigmoid")

model %>% compile(
  optimizer = "rmsprop",
  loss = "binary_crossentropy",
  metrics = c("accuracy")
)

history <- model %>% fit(
  x = ff_train,
  y = ff_train_labels$fraction_yes,
  epochs = 20,
  validation_data = list(ff_test, ff_test_labels$fraction_yes))
Run Code Online (Sandbox Code Playgroud)

其中输入形状为 10,因为我有 10 张图像。我也有 10 个标签,每个标签是 0 到 1 之间的数字向量中的数字(样本中发生的事件的一部分)——两者的长度都是 10。

但是,当我运行模型时,出现错误

 Error in py_call_impl(callable, dots$args, dots$keywords) : 
  ValueError: in user code:
Run Code Online (Sandbox Code Playgroud)

在谷歌搜索之后,我发现https://github.com/rstudio/keras/issues/1063指出问题是我的尺寸或训练和测试之间的结构不匹配,这......似乎不正确?

我在这里缺少什么?尺寸不匹配在哪里?

小智 2

你的输入是图像,所以你需要使用卷积层作为第一层,之后你需要展平层,这将在密集层之前。

如果没有展平层,您的输出是 4 维,但您需要 2 维输出。

  • 你的输出尺寸是 10,500,500,1
  • 但你需要 10,10

最后的致密层应该有 10 个神经元。