Optimizer¶
Warning
Документация к модулю находится в разработке.
Info
Данный модуль предназначен, в первую очередь, для разработчиков, которые хотят глубже понять устройство библиотеки, а также для тех, кто собирается реализовывать свои модули.
Описание¶
Базовый класс для семейства оптимизаторов. Оптимизаторы - это набор математических методов решения оптимизационной задачи для функции ошибки.
Инициализация¶
def __init__(self, nodeinfo=None):
Параметры
Параметр | Возможные типы | Описание | По умолчанию |
---|---|---|---|
nodeinfo | NodeInfo | Объект, содержащий информацию о вычислительном узле | None |
Пояснения
nodeinfo
- особый объект, содержащий информацию о машине, на которой проводятся расчёты; необходим для распараллеливания вычислений.
Методы¶
setAttr
¶
def setAttr(self, name, attr):
Функционал
Задает значение атрибута, например, коэффициента обучения (learning rate). Используется как вспомогательный метод в классах-наследниках.
Параметры
Параметр | Возможные типы | Описание | По умолчанию |
---|---|---|---|
name | str | Имя параметра | - |
attr | float | Значение параметра | - |
Пояснения
-
getAttrDict
¶
def getAttrDict(self):
Функционал
Возвращает атрибуты оптимизатора в виде словаря.
Параметры
-
Пояснения
-
addHook
¶
def addHook(self, hook):
Функционал
Добавляет hook-функцию к оптимизатору.
Параметры
Параметр | Возможные типы | Описание | По умолчанию |
---|---|---|---|
hook | Hook | Хук | - |
Пояснения
-
setupOn
¶
def setupOn(self, mod, useGlobalState=False):
Функционал
Производит установку оптимизатора на обучаемую нейросеть.
Параметры
Параметр | Возможные типы | Описание | По умолчанию |
---|---|---|---|
mod | Module | Обучаемая нейросеть | - |
useGlobalState | bool | Условие оптимизации размещения тензоров на GPU | False |
Пояснения
useGlobalState
- данный флаг отвечает за два основных момента: если он поднят, то, во-первых, произойдёт перераспределение тензоров переменных нейросети на GPU таким образом, чтобы можно было оптимизировать веса с минимальным количеством обращений к GPU, а во-вторых, будет реализована подготовка оптимизатора к параллельному режиму расчётов, если он инициирован.
setupGlobalState
¶
def setupGlobalState(self, vartable):
Функционал
Выполняет перераспределение тензоров переменных нейросети на GPU таким образом, чтобы можно было оптимизировать веса с минимальным количеством обращений к GPU, и готовит оптимизатор к параллельному режиму расчётов, если он инициирован.
Параметры
Параметр | Возможные типы | Описание | По умолчанию |
---|---|---|---|
vartable | dict | Словарь переменных нейросети | - |
Пояснения
vartable
- представленная в виде словаря информация о переменных нейросети, на которую установлен оптимизатор. Под переменными подразумеваются, например, веса и смещения слоёв, которые будут обновляться в процессе обучения.
setupLocalStates
¶
def setupGlobalState(self, vartable):
Функционал
Подготавливает атрибуты внутреннего пользования к проведению расчётов.
Параметры
Параметр | Возможные типы | Описание | По умолчанию |
---|---|---|---|
vartable | dict | Словарь переменных нейросети | - |
Пояснения
vartable
- представленная в виде словаря информация о переменных нейросети, на которую установлен оптимизатор. Под переменными подразумеваются, например, веса и смещения слоёв, которые будут обновляться в процессе обучения.
zeroGradParams
¶
def zeroGradParams(self):
Функционал
Обёртка вокруг вызова операции обнуления накопленных градиентов.
Параметры
-
Пояснения
-
zeroGradGlobalParams
¶
def zeroGradParams(self):
Функционал
Выполняет операцию обнуления накопленных градиентов при работе в глобальном режиме (флаг useGlobalState
при вызове метода setupOn
поднят).
Параметры
-
Пояснения
-
zeroGradLocalParams
¶
def zeroGradParams(self):
Функционал
Выполняет операцию обнуления накопленных градиентов при работе в локальном режиме (флаг useGlobalState
при вызове метода setupOn
опущен).
Параметры
-
Пояснения
-
setupState
¶
def setupState(self, var):
Функционал
Абстрактный вспомогательный метод, реализующийся в классах-наследниках. Формирует информацию о размещённых на GPU тензорах.
Параметры
Параметр | Возможные типы | Описание | По умолчанию |
---|---|---|---|
var | Variable | Объект библиотечного класса Variable, являющегося обёрткой вокруг GPU тензоров | - |
Пояснения
-
update
¶
def update(self, useStreams=False, sync=True):
Функционал
Обёртка вокруг метода обновления переменных обучаемой нейронной сети.
Параметры
Параметр | Возможные типы | Описание | По умолчанию |
---|---|---|---|
useStreams | bool | Флаг, отвечающий за использование мультипоточности при работе в локальном режиме | False |
sync | bool | Флаг, отвечающий за синхронизацию потоков | True |
Пояснения
-
updateGlobalState
¶
def update(self):
Функционал
Выполняет операцию обновления переменных обучаемой нейронной сети при работе в локальном режиме (флаг useGlobalState
при вызове метода setupOn
опущен).
Параметры
-
Пояснения
-
updateLocalStates
¶
def update(self, useStreams, sync):
Функционал
Выполняет операцию обновления переменных обучаемой нейронной сети при работе в локальном режиме (флаг useGlobalState
при вызове метода setupOn
опущен).
Параметры
Параметр | Возможные типы | Описание | По умолчанию |
---|---|---|---|
useStreams | bool | Флаг, отвечающий за использование мультипоточности | - |
sync | bool | Флаг, отвечающий за синхронизацию потоков | - |
Пояснения
-
updateVar
¶
def updateVar(self, var, state, stream=None):
Функционал
Абстрактный метод, который необходимо реализовать в классах-потомках. Именно в этом методе должна быть определена логика, согласно которой будет происходить обновление тензора переданной переменной.
Параметры
Параметр | Возможные типы | Описание | По умолчанию |
---|---|---|---|
var | Variable | Объект библиотечного класса Variable, являющегося обёрткой вокруг GPU тензоров | - |
state | str | - | - |
stream | - | - | None |
Пояснения
-
save
¶
def save(self, hdf, name=None):
Функционал
Сохраняет состояние градиентов в hdf-файл.
Параметры
Параметр | Возможные типы | Описание | По умолчанию |
---|---|---|---|
hdf | Union[str, h5py.File] | Путь к файлу или объект hdf-файла | - |
name | str | Имя текущего состояния | None |
Пояснения
-
load
¶
def load(self, hdf, name=None):
Функционал
Загружает состояние градиентов из hdf-файла.
Параметры
Параметр | Возможные типы | Описание | По умолчанию |
---|---|---|---|
hdf | Union[str, h5py.File] | Путь к файлу или объект hdf-файла | - |
name | str | Имя текущего состояния | None |
Пояснения
-
ensureHdf
¶
def ensureHdf(file, mode):
Функционал
Метод-обёртка, который открывает и возвращает hdf-файл, если в параметре file
передан путь к файлу, или тривиально возвращает параметр file
, если он уже является файловым объектом.
Параметры
Параметр | Возможные типы | Описание | По умолчанию |
---|---|---|---|
file | Union[str, h5py.File] | Путь к файлу или объект hdf-файла | - |
mode | str | Режим открытия файла ('w','r','a', и т.д.) | None |
Пояснения
-