Как определить архитектуру модели с помощью керас? - PullRequest
0 голосов
/ 28 августа 2018

Я хочу создать модель нейронной сети, как показано на рисунке ниже

enter image description here

и моя переменная x_train имеет (20204,2) измерения, а переменная y_train (20204,)

Я использую последовательную модель keras, но когда я запускаю код ниже

model=Sequential()
model.add(Dense(output_dim = 2, init = 'uniform', activation = 'relu', input_dim=20204))
model.add(Dense(output_dim = 3,init = 'uniform',activation = 'softmax'))
model.compile(loss = 'sparse_categorical_crossentropy',optimizer = 'adam',metrics = ['accuracy'])
model.fit(x_train,y_train,batch_size=12,epochs=14)
loss_and_metrics = model.evaluate(x_test, y_test, batch_size=12)
print(loss_and_metrics)

Я получаю сообщение об ошибке

ValueError: Error when checking input: expected dense_26_input to have shape (20204,) but got array with shape (2,)

Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 28 августа 2018

Когда вы говорите, что ваш вход имеет форму (20204, 2), вы имеете в виду, что у вас есть 20204 обучающих примеров, каждый из которых имеет 2 измерений.

Вы должны указать, что ваш ввод рассчитан на 2 размеров и не 20204 . Ошибка возникает из-за того, что ваша модель ожидает получить функции 20204 (т.е. параметр input_dim=20204), но фактически получает функции 2 .

Чтобы исправить это, просто измените параметр, который я упомянул выше:

model=Sequential()
model.add(Dense(output_dim=2, init='uniform', activation='relu', input_dim=2))
model.add(Dense(output_dim=3, init='uniform', activation='softmax'))
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(x_train, y_train, batch_size=12, epochs=14)
loss_and_metrics = model.evaluate(x_test, y_test, batch_size=12)
print(loss_and_metrics)

Редактировать:

Как правильно отметили @today и @desertnaut, на вашем рисунке показан скрытый слой с 4 нейронами, а не 2 , как в приведенном выше коде.

Чтобы изменить это, вам нужно заменить параметр output_dim=2 в скрытом слое на output_dim=4:

model.add(Dense(output_dim=4, init='uniform', activation='relu', input_dim=2))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...