ValueError: Ошибка при проверке целевого объекта: ожидалось, что dens_108 будет иметь 2 измерения, но получил массив с формой (36020, 10, 2) - PullRequest
0 голосов
/ 28 октября 2018

Я строю сверточную нейронную сеть со слоем Convolution1D. Моя сетевая модель приведена ниже. Ввод на плотном слое, кажется, производит массив формы (36020,10,2).

#network model
cnn = Sequential()
cnn.add(Convolution1D(64, 3, border_mode="same",activation="relu",input_shape=(25,1)))
cnn.add(MaxPooling1D(pool_length=(2)))
cnn.add(Flatten())
cnn.add(Dense(128, activation="relu"))
cnn.add(Dropout(0.5))
cnn.add(Dense(2, activation="softmax"))

Данные, которые я пытаюсь подогнать под модель:

X_train=[[[1.0000000e+00]
  [3.0122564e-08]
  [1.6120090e-05]
  ...
  [0.0000000e+00]
  [9.4886076e-08]
  [3.0170717e-08]]

 [[1.0000000e+00]
  [0.0000000e+00]
  [0.0000000e+00]
  ...
  [0.0000000e+00]
  [0.0000000e+00]
  [1.2500001e-12]]

 [[1.0000000e+00]
  [0.0000000e+00]
  [0.0000000e+00]
  ...
  [0.0000000e+00]
  [0.0000000e+00]
  [3.1249999e-11]]

 ...

 [[0.0000000e+00]
  [1.0842798e-05]
  [1.0943735e-06]
  ...
  [0.0000000e+00]
  [9.6288932e-09]
  [1.3172292e-10]]

 [[0.0000000e+00]
  [2.8011250e-01]
  [8.8251436e-01]
  ...
  [0.0000000e+00]
  [4.1974179e-04]
  [3.6202004e-04]]

 [[0.0000000e+00]
  [8.3799750e-06]
  [9.5839296e-06]
  ...
  [0.0000000e+00]
  [8.8683461e-09]
  [1.0194775e-10]]]

y_train = [[[0. 1.]
  [1. 0.]
  [1. 0.]
  ...
  [1. 0.]
  [1. 0.]
  [1. 0.]]

 [[0. 1.]
  [1. 0.]
  [1. 0.]
  ...
  [1. 0.]
  [1. 0.]
  [1. 0.]]

 [[0. 1.]
  [1. 0.]
  [1. 0.]
  ...
  [1. 0.]
  [1. 0.]
  [1. 0.]]

 ...

 [[1. 0.]
  [1. 0.]
  [1. 0.]
  ...
  [1. 0.]
  [1. 0.]
  [1. 0.]]

 [[1. 0.]
  [1. 0.]
  [1. 0.]
  ...
  [1. 0.]
  [1. 0.]
  [1. 0.]]

 [[1. 0.]
  [1. 0.]
  [1. 0.]
  ...
  [1. 0.]
  [1. 0.]
  [1. 0.]]]

Я получаю ошибку об измерении плотного слоя. Я действительно новичок в программировании нейронных сетей.

1 Ответ

0 голосов
/ 28 октября 2018

Проблема в том, что выходная форма модели, (None, 2), не соответствует форме массива меток, (36020, 10, 2), которую вы указываете при обучении модели.Либо вам нужно изменить форму массива меток на (num_samples, 2), либо просто изменить параметры слоев и архитектуру модели, чтобы она имела выходную форму (None, 10, 2) (т.е. чтобы она соответствовала (36020, 10, 2)).Я не могу комментировать далее, какой путь является правильным, поскольку он полностью зависит от того, каковы реальные формы ввода и вывода проблемы, над которой вы работаете, и вы не предоставили никакой информации по этому вопросу.

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