回答編集履歴

1

2018/10/22 15:42

投稿

tiitoi
tiitoi

スコア21956

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 名が重複しないよう注意してください。