Python:keras形状不匹配错误

Python:keras形状不匹配错误,python,keras,Python,Keras,我试图在keras中构建一个非常简单的多层感知器(MLP): model = Sequential() model.add(Dense(16, 8, init='uniform', activation='tanh')) model.add(Dropout(0.5)) model.add(Dense(8, 2, init='uniform', activation='tanh')) sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=Tr

我试图在
keras
中构建一个非常简单的多层感知器(MLP):

model = Sequential()
model.add(Dense(16, 8, init='uniform', activation='tanh'))
model.add(Dropout(0.5))
model.add(Dense(8, 2, init='uniform', activation='tanh'))

sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='mean_squared_error', optimizer=sgd)

model.fit(X_train, y_train, nb_epoch=1000, batch_size=50)
score = model.evaluate(X_test, y_test, batch_size=50)
我的训练数据形状:
X\u train.shape
给出
(34180,16)

标签属于具有形状的二进制类:
y\u train.shape
给出
(34180,)

因此,我的
keras
代码应该生成具有以下连接的网络:
16x8=>8x2

这会产生形状不匹配错误:

ValueError: Input dimension mis-match. (input[0].shape[1] = 2, input[1].shape[1] = 1)

Apply node that caused the error: Elemwise{sub,no_inplace}(Elemwise{Composite{tanh((i0 + i1))}}[(0, 0)].0, <TensorType(float64, matrix)>)
Inputs types: [TensorType(float64, matrix), TensorType(float64, matrix)]
Inputs shapes: [(50, 2), (50, 1)]
Inputs strides: [(16, 8), (8, 8)]
ValueError:输入维度不匹配。(输入[0]。形状[1]=2,输入[1]。形状[1]=1)
导致错误的应用节点:Elemwise{sub,no_inplace}(Elemwise{Composite{tanh((i0+i1))}}[(0,0)].0,)
输入类型:[TensorType(浮点64,矩阵),TensorType(浮点64,矩阵)]
输入形状:[(50,2)、(50,1)]
输入跨步:[(16,8),(8,8)]
Epoch 0处
行的型号。适合(X\u系列,y\u系列,nb\u Epoch=1000,批量大小=50)
。我是不是在监督Keras的一些明显的事情


编辑:我已经完成了问题,但没有解决我的问题

我遇到了相同的问题,然后找到了此线程

您可能需要声明最终输出层为2或任何数量的类别,标签需要为类别类型,其中本质上这是每个观察的二进制向量,例如3类输出向量[0,2,1,0,1,0,1,0]变成[[1,0,0],[0,0,1],[0,1,0],[1,0,0],[0,1,0]]

np_utils.to_分类函数为我解决了这个问题

从keras.utils导入np\u utils、generic\u utils
y_列,y_测试=[np_实用程序到x中的x分类(x)(y_列,y_测试)]

另一个选项是使用
sklearn.preprocessing.LabelBinarizer
,它可以帮助您“取消映射”一个热向量。