2025.3.11 tanh関数
NumPy版
code:p1.py
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-5, 5)
y = np.tanh(x)
plt.plot(x, y)
plt.grid()
plt.show()
PyTorch版
code:p1.py
import matplotlib.pyplot as plt
import torch as pt
x = pt.linspace(-5, 5, 50)
y = pt.tanh(x)
plt.plot(x, y)
plt.grid()
plt.show()
シグモイド関数との比較
code:p1.py
import matplotlib.pyplot as plt
import torch as pt
x = pt.linspace(-5, 5, 50)
y1 = pt.tanh(x)
y2 = pt.sigmoid(x)
plt.plot(x, y1, label='tanh')
plt.plot(x, y2, label='$\sigma$')
plt.grid()
plt.legend()
plt.show()
https://scrapbox.io/files/67cfe7bac4d8e2eb4702bd1d.png
シグモイド関数をtanhに変形する
$ 2\sigma(2x)-1 = \tanh(x)
code:p1.py
import matplotlib.pyplot as plt
import torch as pt
x = pt.linspace(-5, 5, 50)
y1 = pt.tanh(x)
y2 = pt.sigmoid(x*2)*2-1
plt.plot(x, y1, label='$tanh$')
plt.plot(x, y2, label='$2\sigma(2x)-1$')
plt.grid()
plt.legend()
plt.show()
https://scrapbox.io/files/67cfe5e2552b27c0a8fc4975.png
tanhをシグモイド関数に変形する
$ \frac{1}{2} \left(\tanh(\frac{x}{2})+1\right) = \sigma(x)
code:p1.py
import matplotlib.pyplot as plt
import torch as pt
x = pt.linspace(-5, 5, 50)
y1 = (1/2)*(pt.tanh(x/2)+1)
y2 = pt.sigmoid(x)
plt.plot(x, y1, label='$0.5( tanh (x/2)+1)$')
plt.plot(x, y2, label='$\sigma(x)$')
plt.grid()
plt.legend()
plt.show()
https://scrapbox.io/files/67cfe76e6d7413e2a56a22c0.png