Python 2.7 keras错误:检查目标时出错:预期密集_2具有形状(2),但获得具有形状(1)的数组

Python 2.7 keras错误:检查目标时出错:预期密集_2具有形状(2),但获得具有形状(1)的数组,python-2.7,keras,Python 2.7,Keras,我试图用keras编写一些示例,但在检查目标时出现了一些错误:预期稠密_2具有形状(2),但得到了具有形状(1)的数组 我试图更改输入的形状,但不起作用 import keras from keras.models import Sequential from keras.layers import Dense from keras.optimizers import SGD from sklearn.preprocessing import LabelBinarizer from sklear

我试图用keras编写一些示例,但在检查目标时出现了一些错误:预期稠密_2具有形状(2),但得到了具有形状(1)的数组

我试图更改输入的形状,但不起作用

import keras
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import SGD
from sklearn.preprocessing import LabelBinarizer
from sklearn.model_selection import train_test_split
import numpy

print "hello"

input=[[1],[2],[3],[4],[5],[6],[7],[8]]
input=numpy.array(input, dtype="float")
# input=input.reshape(8,1)
output=[[1],[0],[1],[0],[1],[0],[1],[0]]
output=numpy.array(output, dtype="float")



(trainx,testx,trainy,testy)=train_test_split(input, output, test_size=0.25, random_state=42)
lb = LabelBinarizer()
trainy=lb.fit_transform(trainy)
testy=lb.transform(testy)

model=Sequential()
model.add(Dense(4,input_shape=(1,),activation="sigmoid"))
# model.add(Dense(4,activation="sigmoid"))
# print len(lb.classes_)
model.add(Dense(len(lb.classes_),activation="softmax",input_shape=(4,)))
INIT_LR = 0.01
EPOCHS = 20
print("[INFO] training network...")
opt = SGD(lr=INIT_LR)
model.compile(loss="categorical_crossentropy", optimizer=opt,metrics=["accuracy"])
H = model.fit(trainx, trainy, validation_data=(testx, testy),epochs=EPOCHS, batch_size=2)

您应该使用“from tensorflow.python.keras.xx”而不是“from keras.xx”。它防止它接收错误,如:“AttributeError:模块'tensorflow'没有属性'get_default_graph'”

由于您有两个类,您可以在最后的密集层中有一个神经元,并使用乙状结肠激活。或者,如果你想使用softmax,你需要像这样创建一个y的单色编码

(trainx,testx,trainy,testy)=train_test_split(input, output, test_size=0.25, random_state=42)
trainy = keras.utils.to_categorical(trainy, 2)
testy = keras.utils.to_categorical(testy, 2)

它不起作用。但是我试着用np_utils.to_category来做一个单热编码。它起作用。但是在另一个项目中,我用LabelBinarizer来编码。所以我感到非常困惑。从Labelbinarizer的文档中,“对于二进制问题,形状将是[n_samples,1]。因此,您看到了形状错误。在另一个项目中,可能不止两个类。keras.utils.to_category==keras.utils.np_utils.to_category。