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

質問編集履歴

2

コードの変更

2020/01/23 06:14

投稿

Tera0724
Tera0724

スコア18

title CHANGED
File without changes
body CHANGED
@@ -41,7 +41,7 @@
41
41
  for i in range(len(X)):
42
42
  m = 0
43
43
  for j in range(len(X[0])):
44
- m += (pra1_X[i][j]*w[0][j])
44
+ m += (X[i][j]*w[0][j])
45
45
  e.append(m)
46
46
 
47
47
  #交差エントロピーの第1項を計算

1

一応うまくできたのでそのコードも記載した

2020/01/23 06:14

投稿

Tera0724
Tera0724

スコア18

title CHANGED
File without changes
body CHANGED
@@ -22,4 +22,41 @@
22
22
 
23
23
  AttributeError: 'ImmutableDenseNDimArray' object has no attribute 'as_coeff_Mul'
24
24
 
25
- 以前重回帰分析も同様の方法で学習したのですが、その時には各重みによっての微分がうまくできたので原因がわからない状態です。解決方法について教えていただけると助かります。よろしくお願いします。
25
+ 以前重回帰分析も同様の方法で学習したのですが、その時には各重みによっての微分がうまくできたので原因がわからない状態です。解決方法について教えていただけると助かります。よろしくお願いします。
26
+
27
+ 上記コードについて、自然対数の乗数を先に計算して、それを当てはめていくという方法であればうまくいきました。
28
+ 以下に作成したコードを示します。
29
+ ```python
30
+ #説明変数をXとおく
31
+ X = np.array([[2,2,1], [7,8,1]])
32
+
33
+ #クラスをtとおく
34
+ t = np.array([1,0])
35
+
36
+ #sympyのSymbolを使用し重み変数を設定
37
+ w = np.array([w0, w1, w2])
38
+
39
+ 説明変数に対する各自然対数の乗数を計算
40
+ e = []
41
+ for i in range(len(X)):
42
+ m = 0
43
+ for j in range(len(X[0])):
44
+ m += (pra1_X[i][j]*w[0][j])
45
+ e.append(m)
46
+
47
+ #交差エントロピーの第1項を計算
48
+ Lw_1 = 0
49
+ for i in range(len(X)):
50
+ Lw_1 -= t[i] * np.dot(X[i], w.T)
51
+
52
+ #交差エントロピーの第2項を計算
53
+ Lw_2 = 0
54
+ for i in range(len(X)):
55
+ Lw_2 += sym.log(1+sym.exp(e[i]))
56
+
57
+ #各項を繋げる
58
+ Lw = Lw_1 + Lw_2
59
+ コード
60
+ ```
61
+ ただ、出力はできたのですが正しく計算が行われているのか疑問です。上記の記法でも問題ないのでしょうか?
62
+ 大変アバウトな質問となってしまい申し訳ありません。