-
-
Notifications
You must be signed in to change notification settings - Fork 97
/
softmax.py
53 lines (40 loc) · 1.25 KB
/
softmax.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# demonstrasi darii implementasi fungsi softmax
# Ini adalah fungsi yang mengambil vektor dari K
# bilangan real sebagai input, dan menormalkan
# ke dalam distribusi probabilitas yang terdiri
# dari K probabilitas proporsional
# ke eksponensial dari angka input.
# Setelah softmax, elemen dari
# vektor selalu berjumlah 1.
# referensi
# https://en.wikipedia.org/wiki/Softmax_function
import numpy as np
def softmax(vector):
"""
Menerapkan fungsi softmax
Parameter:
vector (np.array,list,tuple): Array berbentuk numpy (1,n)
terdiri dari nilai-nilai nyata atau daftar serupa,tuple
Pengembalian:
softmax_vec (np.array):
Input array numpy setelah diterapkan
softmax.
Vektor softmax menambahkan hingga satu.
Kita perlu membatasi untuk
presisi
>>> vec = np.array([5, 5])
>>> softmax(vec)
array([0.5, 0.5])
>>> softmax([0])
array([1.])
"""
exponent_vector = np.exp(vector)
# Jumlahkan semua eksponensialnya
sum_exponent = np.sum(exponent_vector)
# bagi setiap eksponen dengan jumlah
# semua eksponen
softmax_vector = exponent_vector / sum_exponent
return softmax_vector
if __name__ == "__main__":
import doctest
doctest.testmod(verbose=True)