обрабатывать этикетки для многоголовых CNN - PullRequest
2 голосов
/ 14 октября 2019

Я пытаюсь построить «многоголовую модель CNN», чтобы каждая голова представляла собой ветвь, принимающую отдельные многовариантные данные временных рядов.

Что мне непонятно, как обращаться с методом "fit" или другими словами, как правильно подготовить y_train. Есть 2 класса 0 и 1 для метки

Текущая архитектура такая, как показано здесь. neural net architecture

цель состоит в том, чтобы предсказать шаг вперед на один раз

входные формы:

A Training Data (1, 903155, 5)
B Training Data (1, 903116, 5)
C Training Data (1, 902996, 5)

формы меток:

y_train (903155, 1)

при выполнении:
history = model.fit(x = [A,B,C], y = y_in)

чем я получаю: Input arrays should have the same number of samples as target arrays. Found 1 input samples and 903155 target samples.

изменение формы y_in на (1, 903155) приводит к:

 expected dense_5 (see image) to have shape (1,) but got array with shape (903155,)

странно, что model.predict ([A, B, C]) результаты доходности

Ответы [ 2 ]

2 голосов
/ 14 октября 2019

Проблема кроется в неправильном обращении с размером партии ;первое измерение всех ваших слоев и ваших данных - это пакетное измерение. Ниже приведены объяснения ошибок.


Решение :

y_train (903155, 1) правильно, но A, B, и C, вероятно, нет: они указывают ОДИН образецс размерами (903155, 5), (903116, 5), и (902996, 5) соответственно. Я сомневаюсь, что это желательно - скорее всего, 90... являются размеры партии и должны быть изменены следующим образом: (903155, 1, 5) и т. Д.


Объяснения ошибок :

  • Ошибка 1 говорит о том, что вы подали 1 образец (обучающий пример) в качестве входа, но 903155 меток
  • Ошибка 2 говорит о том, что dense_5 выход имеет форму (None, 1), но, как ожидается, будет сравниваться с (None, 903155) при вычислении потерь

Входные массивы должны иметь то же количество выборок, что и целевые массивы. Найдено 1 входных образцов и 903155 целевых образцов. # Ошибка 1

ожидается, что плотность_5 будет иметь форму (1,), но получен массив с формой (903155,) # Ошибка 2

0 голосов
/ 17 октября 2019

После некоторого поиска я нашел ответ, так как OverLordGoldDragon упомянул, что форма ввода и вывода была неправильной.

1d Conv ожидает входные данные всегда как: (Samples, timesteps_per_sample, features_per_sample)

, поэтому в моем случае (1, 903155, 5) -> (903155, 1, 5)

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