我正在测试一个模型,然后再让它撕开一个完整的数据集。我的数据是数组中的 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 个神经元。