chainerでgan関連の実装をするにあたり、sample実装を参考にしています。その中で以下のclosureの実装みて不思議に思いました。
https://github.com/chainer/chainer/blob/master/examples/dcgan/train_dcgan.py#L57-L63
ここでclosureにする意味は何かあるのでしょうか。
ここでclosureにするメリットのようなものを教えていただければと思っています。(正確にでなく想定であってもかまいません)
この質問の意図はpythonのclosureを上手く使えるようになりたいという目的があります。
pythonのclosureに関してはこれなどを参考に私の認識した範囲ではフィボナッチ数列のような再帰的な関数呼び出しで作られるものや
python
1def adder(x): 2 def add(y): 3 return x+y 4 return add 5 6a3 = adder(3) 7a3(5) # 8が出力 8a10 = adder(10) 9a10(5) # 15が出力
のように関数の一部を書き換えられるようにするだとか
def counter(): x = 0 def counter_internal(): nonlocal x x += 1 return x return counter_internal c = counter() print(c()) #1 print(c()) #2 print(c()) #3
のようにグローバルには変数を定義しないが関数をよびだすことで値を書き換えられるというような使い方に向いていると認識しています。
上記の実装はそのどれにも当てはまらないように思ったので質問いたしました。
よろしくお願いいたします。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/28 16:15