在Keras中的致密层之后重塑层

时间:2019-07-25 15:05:05

标签: keras

我试图理解为什么在致密层和重塑层之间存在不匹配的尺寸。该代码段代码不正确吗?密集层输出的维数为image_resize ^ 2 * 128,为什么重塑会出现冲突?

f1 <- function(dat1, dat2, colNm) {
          dplyr::full_join(dat1, dat2, by = colNm) %>%
              dplyr::mutate(newCol = coalesce(col2.y, col2.x)) %>%
              dplyr::select(colNm, newCol)

     }


f1(df1, df2)
f1(df1, df3)

这是显示的错误:

df1 <- data.frame(col1 = letters[1:5], col2 = seq(10, 50, by = 10))
df2 <- data.frame(col1 = letters[c(1, 3, 4)], col2 = c(100, 150, 160))
df3 <- data.frame(col1 = letters[c(2, 5, 3)], col2 = c(200, 250, 400))

2 个答案:

答案 0 :(得分:0)

您的输入为784,并以7 * 7 * 128进入Dense

因此您将在Reshape中得到784 * 7 * 7 * 128的输出,而不是7 * 7 * 128

答案 1 :(得分:0)

Dense层作用于输入数据的最后一维,如果要将图像输入提供给Dense层,则应首先将其展平:

x = Flatten()(x)
x = Dense(image_resize * image_resize * 128)(x)
x = Reshape((image_resize, image_resize, 128))(x)

然后Reshape将起作用。