python - ValueError: Input 0 is in compatible with layer conv2d_42: expected ndim=4, found ndim=2 for a numeric dataset
问题描述
我正在尝试在具有 3100 个特征和 53953 行的数值数据集上运行卷积自动编码器。所以在编码器层,当我传递输入时,我得到ValueError: Input 0 is incompatible with layer conv2d_44: expected ndim=4, found ndim=2的错误。我找到了很多关于图像数据的解释。但是,找不到数值数据集的任何解释。我的代码如下:
from keras.layers import Input, Dense, Conv2D, MaxPooling2D, UpSampling2D
from keras.models import Model
from keras.layers import *
inputTensor = Input(shape=(3100,))
x = Conv2D(32, (3, 3), activation='relu', padding='same')(inputTensor)
x = MaxPooling2D((2, 2), padding='same')(x)
x = Conv2D(32, (3, 3), activation='relu', padding='same')(x)
x = MaxPooling2D((2, 2), padding='same')(x)
x = Conv2D(32, (3, 3), activation='relu', padding='same')(x)
encoded = MaxPooling2D((2, 2), padding='same')(x)
x = Conv2D(32, (3, 3), activation='relu', padding='same')(encoded)
x = UpSampling2D((2, 2))(x)
x = Conv2D(32, (3, 3), activation='relu', padding='same')(x)
x = UpSampling2D((2, 2))(x)
x = Conv2D(32, (3, 3), activation='relu')(x)
x = UpSampling2D((2, 2))(x)
decoded = Conv2D(1, (3, 3), activation='sigmoid', padding='same')(x)
autoencoder = Model(inputTensor, decoded)
autoencoder.compile(optimizer='adadelta', loss='mean_squared_error')
autoencoder.fit(X, X, epochs=5, batch_size=1032)
有人可以解释一下我在这里缺少什么吗?或者如何在卷积层中传递数值数据?
解决方案
推荐阅读
- c - 循环保持打印垃圾值,处理二进制文件
- excel - 将具有指定日期的数据从一个工作簿复制到另一个工作簿
- android - Expo Speech恢复和暂停方法不适用于Android - React Native
- discord - Discord JS message.member.roles.cache.some
- video - Mencoder 错误 - 合并两个具有相同 fps、分辨率和编解码器的视频文件失败
- xslt - 节点名未在 XSLT 中返回扩展的 QName
- rest - 数据库RESTful API:如何描述表结构
- python - 我正在加载 i18n,但在运行服务器时仍然给我错误
- javascript - 将 es6 转换为内存中的 commonjs 并使用
- raku - 重载包函数以检测未使用任何参数