Почему размер x и размер y должны быть одинаковыми для прогнозирования временных рядов с помощью CNN?

#tensorflow #keras #time-series #conv-neural-network

#tensorflow #keras #временные ряды #conv-нейронная сеть

Вопрос:

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

Для обучения сети я использую CNN с окном длиной 3. Таким образом, сеть должна прогнозировать данные, «наблюдая» за эволюцией величин за 3 разных посещения врача, прогнозировать значение 4-го посещения, переходить к следующим 3 посещениям и т. Д. Для создания обучающих данных и меток я использую следующий метод: для каждого пациента возьмите записи с индексами 0,1,2 и прогнозируйте следующий, затем возьмите записи с индексом 1,2,3 и прогнозируйте следующий и т.д. Итак, если у клиента есть 5 записей, у меня будет 2 метки для 5 записей, как показано ниже (метки выделены оранжевым цветом).

введите описание изображения здесь

CNN будет иметь окно длиной 3 и шагом 1, поэтому с 5 записями ему нужно всего 2 метки.

Но когда я настроил данные таким образом, у меня возникает следующая ошибка :

введите описание изображения здесь

Я следил за учебным пособием веб-сайта TensorFlow, и, насколько я понимаю, они тоже так делали: учебные пособия по временным рядам tensorflow

Это не работает для меня, но я не понимаю, чего я не понимаю

  • вот совместная работа с моим ноутбуком (первая часть предназначена для анализа данных, модель начинается с раздела Prediction ): ссылка на Google collab
  • вот zip-файл, содержащий CSV, вам не нужно его разархивировать, просто загрузите его в collab, и он будет работать с данными пациентов

[ПРАВИТЬ]

это моя форма x и форма y форма x и форма y

это согласуется с тем, что мне нужно: x имеет 5 записей (по 7 функций в каждой), а для 5 записей у меня может быть только 2 y (по 2 функции каждая, молекулярный код лечения и время с последнего посещения)

Комментарии:

1. Пожалуйста, распечатайте форму ваших векторов X и Y. Вероятно, ответ на ошибку есть

Ответ №1:

Я нахожу ответ, я должен изменить все данные таким образом: reshape(1,oldShape[0],oldShape[1] где oldShape форма данных перед изменением формы