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

Пояснения

-