「ゼロから作る Deep Learning」 の numerical_gradient メソッドの名前空間についてのメモ
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
- 作者: 斎藤康毅
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/09/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (8件) を見る
こちらの本のp 114で
... from common.gradient import numerical_gradient class TwoLayerNet: ... def numerical_gradient(self, x, t): ... grads['W1'] = numerical_gradient(loss_W, self.params['W1'])
とあって、再帰呼び出しになって止まらないか…と思ったのですが止まりませんでした。
気になったのでテストして見ます。
test_module.py
def test_function(a,b): return a + b
test.py
from test_module import test_function class TestClass(object): def test_function(a,b): c = test_function(a,b) * 4 # ここで呼ばれるのはimportした方のtest_function return c print(test_function(2,3)) # => 5 print(TestClass.test_function(2,3)) # => 20
こんな感じの結果になりました。TestClass.test_functionと5行目の呼び出し部を書き換えると再帰呼び出しになります。 classでモジュールを切っているので、名前空間がそうなる理由なのかと思いますが、また時間見つけてドキュメント調査します。