Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从1D数据构建2D-CNN时输入形状错误:Keras_Keras - Fatal编程技术网

从1D数据构建2D-CNN时输入形状错误:Keras

从1D数据构建2D-CNN时输入形状错误:Keras,keras,Keras,我有一个大小为100×50(10050d特征)的数据矩阵,来自5个类。通过将数据矩阵重塑为 X=X.reshape(X.shape[0],1,X.shape[1],1) 因此,我的输入形状将是 inpshape= (1,1, X.shape[1]) 接下来,我将CNN定义为 # build model model.add(Conv2D(32, (3, 3), padding='same',input_shape=inpshape )) model.add(Activation('relu')

我有一个大小为100×50(10050d特征)的数据矩阵,来自5个类。通过将数据矩阵重塑为

X=X.reshape(X.shape[0],1,X.shape[1],1)
因此,我的输入形状将是

inpshape= (1,1, X.shape[1])
接下来,我将CNN定义为

# build model
model.add(Conv2D(32, (3, 3), padding='same',input_shape=inpshape ))
model.add(Activation('relu'))
.
.
.
然而,我得到了错误

Input 0 is incompatible with layer conv2d_1: expected ndim=4, found ndim=2
我将一维数据视为二维数据是否错误? 如果是,我如何用数据实现1D conv网络


----------------------更新------------------------------------- 下面是我用一个conv层编写的代码:

from keras.layers import Conv2D, GlobalMaxPooling2D
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten
from keras.optimizers import Adam

num_labels = y.shape[1]
X=X.reshape(X.shape[0],1,X.shape[1],1) 
inpshape= (1,1, X.shape[1])
print(X.shape)

# build model
model.add(Conv2D(32, (1, 3), padding='same',input_shape=inpshape ))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(300))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(num_labels))
model.add(Activation('softmax'))

model.compile(loss='categorical_crossentropy', metrics=['accuracy'],optimizer='Adam')

错误:输入0与层conv2d_1不兼容:预期ndim=4,发现ndim=2

在添加层之前,请确保已初始化模型
model=Sequential()


看起来您正在向已训练的模型添加层。

为什么要使用二维卷积?如果维度已为1,则使用(3,3)过滤器大小不会提供与(1,3)相比的任何额外信息。@McLawrence(3,3)只是一个数字。我想了解错误。即使(1,3)也不起作用。我甚至在数据上尝试了Conv1D层,但还是出现了一个或另一个输入错误。我正在尝试2D,因为我读到ID conv被编程为更好地处理时序数据,就像时间序列预测一样。我无法使用给定的输入形状和命名的层来重现错误。你能发布你的整个模型配置吗。您使用的是哪个版本的
keras
?形状中的
与第一行中使用的形状不匹配。您交换了
1
X.shape[1]
。但是,这给了我另一个版本
2.0.8
的错误。您能提供完整的代码吗?可能错误在另一个地方。@McLawrence我使用的是python 3.6、keras 2.0.6和tensorflow后端