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
:双变量二次函数,其中一个变量使用学习优化器进行优化,另一个变量使用 Adam 进行优化。quadratic
:批量十变量二次函数。mnist
:使用两层全连接网络的 Mnist 分类。cifar
:使用卷积神经网络的 Cifar10 分类。cifar-multi
:使用卷积神经网络的 Cifar10 分类,其中使用两个独立的学习优化器。一种用于优化来自卷积层的参数,另一种用于优化来自全连接层的参数。新问题可以很容易地实现。您可以在train.py
中看到, MetaOptimizer
类中的meta_minimize
方法被赋予一个函数,该函数返回 TensorFlow 操作,该操作生成我们想要最小化的损失函数(有关示例,请参阅problems.py
)。
重要的是,所有具有 Python 副作用的操作(例如队列创建)都必须在传递给meta_minimize
函数之外完成。 problems.py
中的cifar10
函数是使用 TensorFlow 队列的损失函数的一个很好的示例。
免责声明:这不是 Google 官方产品。