-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprml_10_12.py
More file actions
56 lines (39 loc) · 1.12 KB
/
prml_10_12.py
File metadata and controls
56 lines (39 loc) · 1.12 KB
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
54
55
56
import numpy as np
import matplotlib.pyplot as plt
def sigmoid(x):
y = 1 / (1 + np.exp(-x))
return y
def sigmoid_lowerLimit(x, xi):
lam = np.tanh(xi / 2) / (4 * xi)
y = sigmoid(xi) * np.exp((x - xi) / 2 - lam * (x**2 - xi**2))
return y
def sigmoid_upperLimit(x, eta):
g = - (1 - eta) * np.log(1 - eta) - eta * np.log(eta)
y = np.exp(eta * x - g)
return y
def sigmoid_upperLimit2(x, xi):
eta = 1 / (1 + np.exp(xi))
g = eta * xi - np.log(sigmoid(xi))
y = np.exp(eta * x - g)
return y
x = np.linspace(-6, 6, 100)
plt.subplot(1, 2, 1)
plt.ylim([0, 1])
plt.plot(x, sigmoid(x), 'k-')
# シグモイド
# シグモイドの上限
eta1 = 0.2
eta2 = 0.7
plt.plot(x, sigmoid_upperLimit(x, eta1), 'k--')
plt.plot(x, sigmoid_upperLimit(x, eta2), 'k--')
plt.subplot(1, 2, 2)
plt.ylim([0, 1])
plt.plot(x, sigmoid(x), 'k-')
xi = 2.5
# シグモイドの下限
plt.plot(x, sigmoid_lowerLimit(x, xi), 'k--')
# シグモイドの上限
plt.plot(x, sigmoid_upperLimit2(x, xi), 'k--')
plt.vlines(xi, 0, sigmoid(xi), linestyles='dotted')
plt.vlines(-xi, 0, sigmoid(-xi), linestyles='dotted')
plt.show()