ожидается, что плотность_1 будет иметь форму (1,), но получен массив с формой (2,) - PullRequest
0 голосов
/ 07 декабря 2018

Я получаю эту ошибку:

ValueError: Error when checking target: expected dense_1 to have shape (1,) but got array with shape (2,)

Когда я запускаю:

num_classes = 2
model = keras.Sequential()

model.add(keras.layers.InputLayer(input_shape=[64,64,1]))
model.add(keras.layers.Conv2D(filters = 32, kernel_size=5, strides=1, padding ='same', activation='relu'))
model.add(keras.layers.MaxPooling2D(pool_size=5, padding='same'))

model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(512, activation='relu'))
model.add(keras.layers.Dense(num_classes, activation='softmax'))
#model.summary()

#Compile and train the model
model.compile(optimizer=tf.train.AdamOptimizer(0.001),
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

model.fit(x = tr_img, y = tr_lbl, epochs=2, batch_size = 5)

Мои входные данные (изображения) хранятся в массиве numpy и имеют форму: (300,64, 64, 1)

Мои метки имеют форму: (300, 2) и имеют один горячий формат, например, так: [0,1] ...

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

1 Ответ

0 голосов
/ 07 декабря 2018

Проблема в вашей функции потерь.Вам следует использовать loss='binary_crossentropy' или loss='categorical_crossentropy', если вы используете вывод softmax с метками, закодированными одним горячим кодом

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