C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Pythonのhooks 何でんすか

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■93299 / inTopicNo.1)  Pythonのhooks 何でんすか
  
□投稿者/ くまふぁん (1回)-(2019/12/03(Tue) 17:47:45)

分類:[その他の言語] 


Pythonで申し訳ございませんが、
Pythonのサンプルコードを解読している途中、下記のようなクラス定義の中に
SFG関数とhooksの意味が分からなくて、ネットで検索しても出なかったので
Pythonに詳しい方教えていただけませんか。


class AAA:
def __init__(self, model, feature_layer):

def SFG(module, in_grad, out_grad):
self.feature_grad = out_grad[0]
self.hooks.append(self.feature_layer.register_backward_hook(SFG))





引用返信 編集キー/
■93300 / inTopicNo.2)  Re[1]: Pythonのhooks 何でんすか
□投稿者/ くまふぁん (2回)-(2019/12/03(Tue) 17:52:06)

この掲示板が解体フォーマットが勝手に変えられたので、
追加説明します:
下記の三行がdef __init__(self, model, feature_layer)の中に存在するもんで、
本来右へずらしていますが、ここの掲示板ではできないみたいです。

def SFG(module, in_grad, out_grad):
self.feature_grad = out_grad[0]
self.hooks.append(self.feature_layer.register_backward_hook(SFG))
引用返信 編集キー/
■93301 / inTopicNo.3)  Re[2]: Pythonのhooks 何でんすか
□投稿者/ Azulean (1109回)-(2019/12/03(Tue) 22:03:55)
2019/12/04(Wed) 06:17:30 編集(投稿者)

No93300 (くまふぁん さん) に返信
> 本来右へずらしていますが、ここの掲示板ではできないみたいです。
そういう場合は「図表モード」というラジオボタンを使ってください。
隣に「ソースコードを貼る場合はこちらを使用」と書いてありますので…。


> 下記の三行がdef __init__(self, model, feature_layer)の中に存在するもんで、
>
> def SFG(module, in_grad, out_grad):
> self.feature_grad = out_grad[0]
> self.hooks.append(self.feature_layer.register_backward_hook(SFG))

3 行ともじゃなくて、self.hooks 始まりの行は左にずれていませんか?
たぶん、SFG が一行だけの処理を持つ、ローカル関数なのではないかと思います。
https://www.atmarkit.co.jp/ait/articles/1905/28/news017.html

その後、__init__ に戻って、ローカル関数「SFG」を hooks に追加(append)しているのだと思いますが、そのクラスに応じた処理なのではないでしょうか…?
サンプルに特化した処理だと予想しますが、断言できるほど Python になじんでないので…。
(サンプルに特化した処理であれば、第三者に説明できません)
引用返信 編集キー/
■93303 / inTopicNo.4)  Re[1]: Pythonのhooks 何でんすか
□投稿者/ Azulean (1110回)-(2019/12/03(Tue) 22:05:06)
返信でテキストボックスみたら、そう書いてありましたね。

■No93299 (くまふぁん さん) に返信
> class AAA:
>     def __init__(self, model, feature_layer):
> 
>         def SFG(module, in_grad, out_grad):
>             self.feature_grad = out_grad[0]
>         self.hooks.append(self.feature_layer.register_backward_hook(SFG))

このため、SFG は直下の self.feature_grad = out_grad[0] だけの処理を持つ、ローカル関数です。

引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ