ステージ2 自然なコードで表現する
ステップ11 可変長の引数(順伝播編) ステップ12 可変長の引数(改善編) ステップ13 可変長の引数(逆伝播編) ステップ14 同じ変数を繰り返し使う ステップ15 複雑な計算グラフ(理論編) ステップ16 複雑な計算グラフ(実装編) ステップ17 メモリ管理と循環参照 ステップ18 メモリ使用量を減らすモード ステップ19 変数を使いやすく ステップ20 演算子のオーバーロード(1) ステップ21 演算子のオーバーロード(2) ステップ22 演算子のオーバーロード(3) ステップ23 パッケージとしてまとめる ステップ24 複雑な関数の微分 |
このステージでは、より複雑な計算ができるように、「変数(Variable クラス)」と「関数(Function クラス)」を拡張する内容でした。具体的には、
・複数の入力を受け取る関数
・複数の出力を返す関数
・同じ変換を繰り返し使う
・関数の実行の優先順位を考える
・メモリ管理
・循環参照
・メモリ使用量を減らす
・変数に名前を付ける
・ndarray のインスタンス変数のように使う
・加算、減算、負数、乗算、割算、累乗の実装
・他の型と一緒に演算を行う
・+や*などの演算子が使える
・パッケージ化
・複雑な関数の微分(Sphere、matyas、Goldstein−Price)
などです。
コラムでは、Define−by−Run と、Define−and−Run について、それぞれのメリットやデメリットについて、分かりやすい解説があります。