回答編集履歴

2

追記

2019/05/19 00:31

投稿

mkgrei
mkgrei

スコア8560

test CHANGED
@@ -65,3 +65,27 @@
65
65
  return np.exp(a - np.max(a)) / np.sum(np.exp(a - np.max(a)))
66
66
 
67
67
  ```
68
+
69
+
70
+
71
+ もう一方
72
+
73
+ ```
74
+
75
+ def softmax(x):
76
+
77
+ x = x - np.max(x) # オーバーフロー対策
78
+
79
+ return np.exp(x) / np.sum(np.exp(x))
80
+
81
+ ```
82
+
83
+
84
+
85
+ ```
86
+
87
+ def softmax(x):
88
+
89
+ return np.exp(x - np.max(x)) / np.sum(np.exp(x - np.max(x)))
90
+
91
+ ```

1

追記

2019/05/19 00:31

投稿

mkgrei
mkgrei

スコア8560

test CHANGED
@@ -1 +1,67 @@
1
1
  `if x.ndim == 2:`のブロックを無視すれば、同じことをやっていませんか。
2
+
3
+
4
+
5
+ ---
6
+
7
+ 仮に代入してみると、
8
+
9
+ その一
10
+
11
+ ```
12
+
13
+ y = exp_a / sum_exp_a
14
+
15
+ return y
16
+
17
+ ```
18
+
19
+
20
+
21
+ ```
22
+
23
+ return exp_a / sum_exp_a
24
+
25
+ ```
26
+
27
+ その二
28
+
29
+ ```
30
+
31
+ exp_a = np.exp(a - c) # オーバーフロー対策
32
+
33
+ sum_exp_a = np.sum(exp_a)
34
+
35
+ return return exp_a / sum_exp_a
36
+
37
+ ```
38
+
39
+
40
+
41
+ ```
42
+
43
+ return np.exp(a - c) / np.sum(np.exp(a - c))
44
+
45
+ ```
46
+
47
+ その三
48
+
49
+ ```
50
+
51
+ def softmax(a):
52
+
53
+ c = np.max(a)
54
+
55
+ return np.exp(a - c) / np.sum(np.exp(a - c))
56
+
57
+ ```
58
+
59
+
60
+
61
+ ```
62
+
63
+ def softmax(a):
64
+
65
+ return np.exp(a - np.max(a)) / np.sum(np.exp(a - np.max(a)))
66
+
67
+ ```