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 官方產品。