Визуализация архитектуры сети
Понимание архитектуры модели может быть очень полезным как для отладки вашей сети, так и для понимания её поведения.
В этом документе мы построим глобальную модель, используя данные о часовой нагрузке региона ERCOT. В качестве референса мы используем записную книжку ./global_modeling.ipynb
Наконец, мы визуализируем архитектуру сети.
Сначала мы установим Graphviz. Для Windows перейдите по ссылке https://www.graphviz.org/download/. Для Mac/Linux выполните команду ниже.
try:
# зависимости уже установлены
from torchsummary import summary
from torchviz import make_dot
except:
# установка graphviz в системе
import platform
if "Darwin" == platform.system():
!brew install graphviz
elif "Linux" == platform.system():
!sudo apt install graphviz
else:
print("перейдите по ссылке https://www.graphviz.org/download/")
# Затем нам нужно установить следующие зависимости:
!pip install torchsummary
!pip install torch-summary
!pip install torchviz
!pip install graphviz
# импорт
from torchsummary import summary
from torchviz import make_dot
Сначала загружаем данные:
0
2004-01-01 01:00:00
7225.09
877.79
1044.89
745.79
7124.21
1660.45
3639.12
654.61
1
2004-01-01 02:00:00
6994.25
850.75
1032.04
721.34
6854.58
1603.52
3495.16
639.88
2
2004-01-01 03:00:00
6717.42
831.63
1021.10
699.70
6639.48
1527.99
3322.70
623.42
Извлекаем названия регионов, которые впоследствии будут использоваться при создании модели.
Глобальные модели могут быть активированы, когда входные данные df функции содержат дополнительную колонку ID, которая идентифицирует различные временные ряды (помимо типичной колонки ds, содержащей временные метки, и колонки y, содержащей наблюдаемые значения временного ряда). В нашем примере мы выбираем данные за трехлетний интервал (с 2004 по 2007 год).
0
2004-01-01 01:00:00
7225.09
COAST
1
2004-01-01 02:00:00
6994.25
COAST
2
2004-01-01 03:00:00
6717.42
COAST
Когда входными данными для функции split_df является pd.DataFrame с колонкой ‘ID’, обучающие и валидационные данные предоставляются в аналогичном формате. Для глобальных моделей входные данные обычно разделяются в соответствии с долей времени, охватывающей все временные ряды (по умолчанию, когда есть более одного ‘ID’ и когда local_split=False). Если пользователь хочет разделить каждый временной ряд локально, параметр local_split должен быть установлен в значение True. В этом примере мы разделим наши данные на обучающую и тестовую выборки (с долей теста 33% - 2 года обучения и 1 год теста).
Глобальное моделирование позволяет нам тренировать нашу модель, основываясь либо на глобальной, либо на локальной нормализации. В последнем случае каждый временной ряд нормализуется локально (у каждого временного ряда есть свои соответствующие параметры данных). В первом случае у нас есть уникальные параметры данных, которые будут использоваться во всех рассматриваемых временных рядах.
Глобальное моделирование — локальная нормализация
Процесс стандартной подгонки глобальных моделей основан на локализованной нормализации данных. Каждый временной ряд будет иметь параметры нормализации данных, связанные с каждым предоставленным идентификатором ('ID'). Мы собираемся определить модель, которая прогнозирует следующий час на основе данных последних 24 часов.
После создания объекта NeuralProphet, модель можно создать, вызвав функцию fit
1
0.025526
0.033126
0.000416
0.0
1
1. Сводная информация о сети
От https://pypi.org/project/torch-summary/ :
Torch-summary предоставляет информацию, дополняющую то, что предоставляет print(your_model) в PyTorch, аналогично API model.summary() в Tensorflow для визуализации модели, что помогает при отладке вашей сети. В этом проекте мы реализуем аналогичный функционал в PyTorch и создаем чистый, простой интерфейс для использования в ваших проектах.
2. Сетевая визуализация
От https://github.com/szagoruyko/pytorchviz :
Небольшой пакет для создания визуализаций графиков и трассировок выполнения PyTorch.
Last updated