【发布时间】: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