【问题标题】:Keras fully connected followed by convolutionKeras 全连接后卷积
【发布时间】:2019-08-31 08:43:29
【问题描述】:

我对 keras 还不是很厉害,所以请温柔一点。

我的输入数据是一个大小为 60000 x 784 的矩阵。

我正在尝试在我的全连接层之后添加卷积层,如下所示:

model = Sequential()
model.add(Dense(784, input_dim=train_amplitudes.shape[1], activation='relu'))
model.add(Dense(784, activation='relu'))
model.add(Dense(784, activation='relu'))
model.add(Conv2D(100, kernel_size=5, activation='relu', input_shape=(28, 28))
mode.add(Conv2D(20, kernel_size = 3, activation = 'relu'))
model.add(Dense(train_targets.shape[1], activation='linear'))

请注意,28 * 28 = 784。 我在第一个卷积层收到错误“输入 0 与 conv2d_1 层不兼容:预期 ndim=4,发现 ndim=2”。

为什么以及如何解决这个问题?

【问题讨论】:

  • 我猜你没有使用是对的。就像 Conv2D 层中的输入是 4 暗淡,而您提供的是 2d 数组。并且不会自动将二维数组变为4维。
  • 在尝试修复错误之前,您应该在概念上告诉我们您想要做什么。密集层产生 2D 向量,而 Conv2D 层处理输入图像(4D 向量),因此当然存在不​​匹配,这不仅仅是编程问题。您需要告诉我们网络应该做什么。
  • @MatiasValdenegro 我想要的很简单。我想创建一个首先具有密集层,然后是卷积层的网络。而已。我意识到大部分情况是相反的,但我想试试这个。
  • 你想如何处理密集层不产生图像的事实?
  • 灰度图像是一个二维矩阵。密集层给了我 1 x 784 维度的输出。这可以重新排列为 28 x 28 矩阵,或者换句话说,一个灰度图像。

标签: python tensorflow keras


【解决方案1】:

这种特定网络结构的目的是什么?假设您的原始数据是 28x28,您应该将输入保留为 28x28,然后应用 conv2d。之后,您可以展平卷积块的最后一个输出以继续使用全连接层。

【讨论】:

  • 我不想那样做。我特别想先使用全连接层
【解决方案2】:

在 Keras 中,输入 shape 参数是一个 4D 张量,其形状为:(batch, channels, rows, cols) 如果 data_format 为 "channels_first" 或 4D tensor with shape: (batch, rows, cols, channels) 如果 data_format 为 "频道_最后”。您只是传递行和列(您的想法),但它也需要批处理和通道。更多信息可以在here找到。

【讨论】:

  • 即使我没有指定输入形状(根据文档我应该只在图层是第一个时这样做),它仍然给我这个错误。
【解决方案3】:

我想我已经设法解决了。这是“有效”的代码

    model = Sequential()
    model.add(Dense(784, input_dim=train_amplitudes.shape[1], activation='relu'))
    model.add(Dense(784, activation='relu'))
    model.add(Dense(784, activation='relu'))
mode.add(Reshape((28, 28, 1))
    model.add(Conv2D(100, kernel_size=5, activation='relu')
    mode.add(Conv2D(20, kernel_size = 3, activation = 'relu'))
model.add(Flatten())
    model.add(Dense(train_targets.shape[1], activation='linear'))

它的工作原理是不会产生错误。是否有意义或产生良好的输出,这是另一回事,但这对我来说已经足够了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-30
    • 2018-07-13
    • 2021-11-17
    • 1970-01-01
    • 2018-07-30
    • 2020-11-15
    • 2018-12-22
    相关资源
    最近更新 更多