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

回答編集履歴

3

挿入したコードの位置を変更

2018/01/14 01:33

投稿

wakame
wakame

スコア1170

answer CHANGED
@@ -3,11 +3,7 @@
3
3
  2. はいそうです。`TwoLayerNetクラスのnumerical_gradient関数`の引数(x, t)がラムダ式に渡され、`loss_W`に格納されています。
4
4
 
5
5
  3. まず`self.params['W1']`と`self.params['W2']`は初期値が異なります。以下のコードで確認してみました。
6
- したがって`loss_W`は引数共通であっても両者値が異なるので結果が異なるということになります。
7
6
 
8
- ごめんなさい、最後のこの文の意味がよくわかりませんでした。
9
- > しかし、色々とデータを代入してみると、['W1']の場合と['W2']の場合で結果が異なってしまいました。どうして違う結果になるのでしょうか。
10
-
11
7
  ```python
12
8
  import numpy as np
13
9
  from pprint import pprint
@@ -53,4 +49,9 @@
53
49
  [-0.01369978, 0.00572917, 0.00457355, ..., 0.01380905,
54
50
  0.00524373, -0.00342188]])
55
51
  """
56
- ```
52
+ ```
53
+
54
+ したがって`loss_W`は引数共通であっても両者値が異なるので結果が異なるということになります。
55
+
56
+ ごめんなさい、最後のこの文の意味がよくわかりませんでした。
57
+ > しかし、色々とデータを代入してみると、['W1']の場合と['W2']の場合で結果が異なってしまいました。どうして違う結果になるのでしょうか。

2

よくわからなかった点を追記

2018/01/14 01:33

投稿

wakame
wakame

スコア1170

answer CHANGED
@@ -5,6 +5,9 @@
5
5
  3. まず`self.params['W1']`と`self.params['W2']`は初期値が異なります。以下のコードで確認してみました。
6
6
  したがって`loss_W`は引数共通であっても両者値が異なるので結果が異なるということになります。
7
7
 
8
+ ごめんなさい、最後のこの文の意味がよくわかりませんでした。
9
+ > しかし、色々とデータを代入してみると、['W1']の場合と['W2']の場合で結果が異なってしまいました。どうして違う結果になるのでしょうか。
10
+
8
11
  ```python
9
12
  import numpy as np
10
13
  from pprint import pprint

1

最後の質問についての回答を追加

2018/01/14 01:32

投稿

wakame
wakame

スコア1170

answer CHANGED
@@ -1,3 +1,53 @@
1
1
  1. はいそうです。プログラムの先頭部分に`from common.gradient import numerical_gradient` とあるのでcommon以下の`gradient.py`に定義されている`numerical_gradient`を使用しています。
2
2
 
3
- 2. はいそうです。`TwoLayerNetクラスのnumerical_gradient関数`の引数(x, t)がラムダ式に渡され、`loss_W`に格納されています。
3
+ 2. はいそうです。`TwoLayerNetクラスのnumerical_gradient関数`の引数(x, t)がラムダ式に渡され、`loss_W`に格納されています。
4
+
5
+ 3. まず`self.params['W1']`と`self.params['W2']`は初期値が異なります。以下のコードで確認してみました。
6
+ したがって`loss_W`は引数共通であっても両者値が異なるので結果が異なるということになります。
7
+
8
+ ```python
9
+ import numpy as np
10
+ from pprint import pprint
11
+
12
+ input_size=784
13
+ hidden_size = 100
14
+ output_size=10
15
+ weight_init_std = 0.01
16
+ W1 = weight_init_std * np.random.randn(input_size, hidden_size)
17
+ pprint(W1)
18
+
19
+ """
20
+ array([[ -4.66963760e-03, -4.61920583e-03, -1.34628863e-02, ...,
21
+ -7.12342008e-03, -9.51390931e-03, -1.42363695e-02],
22
+ [ 5.15248205e-03, -1.81531005e-02, -9.33031556e-03, ...,
23
+ -6.03827853e-03, 2.32682820e-02, 1.14371378e-02],
24
+ [ -1.47480497e-03, -1.16778968e-02, -5.36428583e-03, ...,
25
+ 3.24273403e-03, 2.58535969e-03, 4.07705684e-03],
26
+ ...,
27
+ [ -6.12870871e-04, 2.27194176e-02, -9.20775174e-03, ...,
28
+ -6.56353954e-03, -4.82236650e-03, -8.97790691e-03],
29
+ [ -1.38384077e-02, -1.03076298e-02, 3.97350335e-03, ...,
30
+ -4.14367214e-03, -7.06703864e-06, 9.48678489e-03],
31
+ [ -1.24808408e-03, -4.70239299e-03, 5.48649149e-03, ...,
32
+ 1.01967985e-02, 1.20364877e-02, 2.37953073e-03]])
33
+ """
34
+
35
+ W2 = weight_init_std * np.random.randn(input_size, hidden_size)
36
+ pprint(W2)
37
+
38
+ """
39
+ array([[-0.00076081, -0.00396194, 0.00877313, ..., -0.01413236,
40
+ 0.00682878, 0.00223497],
41
+ [ 0.00896433, 0.00138473, -0.00574664, ..., 0.00085467,
42
+ 0.01578464, 0.00760901],
43
+ [ 0.00133846, -0.012744 , 0.00191541, ..., -0.01548384,
44
+ -0.01866372, 0.01076827],
45
+ ...,
46
+ [ 0.00888638, 0.00104892, 0.01148437, ..., 0.00610676,
47
+ -0.00137109, 0.00020582],
48
+ [ 0.00232449, -0.00431334, -0.0065821 , ..., 0.02289721,
49
+ 0.00331537, -0.0168427 ],
50
+ [-0.01369978, 0.00572917, 0.00457355, ..., 0.01380905,
51
+ 0.00524373, -0.00342188]])
52
+ """
53
+ ```