learning to learn
1.0.0
python train.py --problem=mnist --save_path=./mnist
Флаги командной строки:
save_path
: если присутствует, оптимизатор будет сохраняться по указанному пути каждый раз, когда производительность оценки улучшается.num_epochs
: количество эпох обучения.log_period
: Эпохи до того, как сообщается о средней производительности и времени.evaluation_period
: Эпохи перед оценкой оптимизатора.evaluation_epochs
: количество эпох оценки.problem
: Проблема для тренировки. См. раздел «Проблемы» ниже.num_steps
: количество шагов оптимизации.unroll_length
: количество шагов развертывания для оптимизатора.learning_rate
: Скорость обучения.second_derivatives
: если true
, оптимизатор попытается вычислить вторые производные с помощью функции потерь, указанной в задаче. python evaluate.py --problem=mnist --optimizer=L2L --path=./mnist
Флаги командной строки:
optimizer
: Adam
или L2L
.path
: путь к сохраненному оптимизатору, актуален только при использовании оптимизатора L2L
.learning_rate
: Скорость обучения, актуальна только при использовании оптимизатора Adam
.num_epochs
: Количество эпох оценки.seed
: начальное число для генерации случайных чисел.problem
: Проблема для оценки. См. раздел «Проблемы» ниже.num_steps
: количество шагов оптимизации. Сценарии обучения и оценки решают следующие проблемы (подробнее см. в util.py
):
simple
: квадратичная функция с одной переменной.simple-multi
: квадратичная функция с двумя переменными, где одна из переменных оптимизируется с помощью обученного оптимизатора, а другая - с помощью Адама.quadratic
: пакетная квадратичная функция с десятью переменными.mnist
: классификация Mnist с использованием двухслойной полностью связной сети.cifar
: классификация Cifar10 с использованием сверточной нейронной сети.cifar-multi
: классификация Cifar10 с использованием сверточной нейронной сети, в которой используются два независимых обученных оптимизатора. Один для оптимизации параметров сверточных слоев, а другой — для параметров полностью связанных слоев. Новые задачи могут быть реализованы очень легко. В train.py
вы можете видеть, что методу meta_minimize
из класса MetaOptimizer
присвоена функция, которая возвращает операцию TensorFlow, генерирующую функцию потерь, которую мы хотим минимизировать (пример см. в problems.py
).
Важно, чтобы все операции с побочными эффектами Python (например, создание очереди) выполнялись вне функции, переданной в meta_minimize
. Функция cifar10
в problems.py
— хороший пример функции потерь, использующей очереди TensorFlow.
Отказ от ответственности: это не официальный продукт Google.