Ошибка keras: Ошибка при проверке цели: ожидается, что плотность_2 будет иметь форму (2,), но получен массив с формой (1,) - PullRequest
0 голосов
/ 26 марта 2019

Я попытался написать пример с керасом, но произошла ошибка при проверке цели: ожидалось, что плотность_2 будет иметь форму (2,), но получен массив с формой (1,)

Я пытался изменить input_shape, но он не работает

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)

Ответы [ 2 ]

1 голос
/ 26 марта 2019

Поскольку у вас есть два класса, вы можете иметь один нейрон в последнем плотном слое и использовать сигмовидную активацию. Или, если вы хотите использовать 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)
0 голосов
/ 26 марта 2019

Вы должны использовать «from tenorflow.python.keras.xx» вместо «from keras.xx».Он не позволяет получить сообщение об ошибке, например: «AttributeError: у модуля tenensflow нет атрибута get_default_graph»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...