teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記

2021/02/27 07:58

投稿

quickquip
quickquip

スコア11327

answer CHANGED
@@ -11,9 +11,19 @@
11
11
  とクラスのドキュメントに明記されています。
12
12
  説明を信じるなら `__call__`の中に`call`を呼び出す実装があるはず、と考えるのが妥当です。
13
13
 
14
- それを無視して何を不思議に思っているのか(なぜ説明が信じられないのか)が理解できません。そのあたり補足してほしいです。
14
+ (以下編集して改変)
15
15
 
16
+ ではその`__call__`が何でいつ呼び出されるか? はすでに回答が付いている通り、比較的簡単にたどり着けるはずです。公式ドキュメントを`__call__`で検索してもいいでしょう。
17
+ ちなみにPython公式ドキュメントだとここです。
18
+ [https://docs.python.org/ja/3/reference/datamodel.html#object.__call__](https://docs.python.org/ja/3/reference/datamodel.html#object.__call__)
16
19
 
20
+ kerasとPythonの公式ドキュメントから
21
+
22
+ `self.critic(states, actions)`は実体として`__call__`を呼び出します。
23
+ `call`はその`__call__` の中で呼び出されます。
24
+
25
+ という構造になっていることがわかるかと思います。
26
+
17
27
  ----
18
28
 
19
29
  (追記)念のためModelがLayerのサブクラスか確認しておきます。

1

追記修正

2021/02/27 07:58

投稿

quickquip
quickquip

スコア11327

answer CHANGED
@@ -2,12 +2,27 @@
2
2
 
3
3
  のcallメソッドの説明に
4
4
 
5
- > call(self, *args, **kwargs): Called in __call__ after making sure build() has been called.
5
+ > call(self, *args, **kwargs): Called in `__call__` after making sure build() has been called.
6
6
 
7
+ かんたん訳
7
8
 
8
- > build() が呼び出されたことを確認した後、__call__ の中で呼び出されます。
9
+ > build() が呼び出されたことを確認した後、`__call__` の中で呼び出されます。
9
10
 
10
11
  とクラスのドキュメントに明記されています。
11
12
  説明を信じるなら `__call__`の中に`call`を呼び出す実装があるはず、と考えるのが妥当です。
12
13
 
13
- それを無視して何を不思議に思っているのか(なぜ説明が信じられないのか)が理解できません。
14
+ それを無視して何を不思議に思っているのか(なぜ説明が信じられないのか)が理解できません。そのあたり補足してほしいです。
15
+
16
+
17
+ ----
18
+
19
+ (追記)念のためModelがLayerのサブクラスか確認しておきます。
20
+
21
+ ```
22
+ >>> from tensorflow.keras.models import Model
23
+
24
+ >>> from tensorflow.keras.layers import Layer
25
+
26
+ >>> issubclass(Model, Layer)
27
+ True
28
+ ```