回答編集履歴
1
あ
test
CHANGED
@@ -15,3 +15,23 @@
|
|
15
15
|
|
16
16
|
|
17
17
|
self.accuracy() が返すテンソルの eval() を呼ぶのなら、self.accuracy().eval() とするべきではないでしょうか。
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
## 追記
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
`accuracy = self.accuracy(y, t)` の部分で精度を計算するノードを作成しています。ただ、これはローカル変数なので、def evaluate() 内で self.accuracy としてもこの変数は参照されません。
|
26
|
+
|
27
|
+
そのかわりに accuracy(self, y, t) というメソッドのほうが参照されてしまい、今回の質問のエラーに繋がっています。
|
28
|
+
|
29
|
+
なので、evaluate() 内で作成した精度を計算するノード accuracy を参照するために、`self.acc = self.accuracy(y, t)` のように Attribute として記録しておき、`evaluate(self, X_test, Y_test)` 内で self.acc.eval(引数) とすれば、目的のことができるでしょう。
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
`self.accuracy = self.accuracy(y, t)` のようにしないよう注意してください。
|
34
|
+
|
35
|
+
Attribute とメソッドで同じ名前を使用した場合、メソッドのほうが隠蔽されてしまい、self.accuracy() と呼び出すことができなくなってしまいます。
|
36
|
+
|
37
|
+
今回のケースに限らず、メソッド名と Attribute 名が重複しないよう注意してください。
|