[Pytorch]の研究ノート - 活性化機能

[Pytorch]の研究ノート - 活性化機能

:から学ぶMoのトラブルパイソン

活性化関数とは何ですか

例文の活性化は:ニューラルネットワークは非線形問題のステップを記述できるようにすることです、ニューラルネットワークはより強力になり、

1.非線形因子は、問題を解決するために添加される活性化関数は、線形モデルを解くことができません。
制約が線形受信を考慮2励起関数、湾曲した線形関数が破壊されている
3.また実際非線形関数である。例えばrelu、シグモイド、TANHについて元にこれらのネストされたツール破断屈曲結果を、元の線形力が結果を歪ませる。また、出力yそのような非線形の特徴を有します。

共通機能を使用します

1.あなたのニューラルネットワーク層のみ二、三、時間のない多くは、隠れ層のために、特にそこに影響を受けることになります、気軽に曲げが可能で破り、任意の活性化関数を使用し
ますが、特殊な多層を使用する場合は2をそれが爆発勾配を伴うだろうので、ニューラルネットワークは、ターン破壊にプレーが武器を自由に選択できない場合には、勾配が離れて行きます。

シーンを使用して励起関数

1.小さな層構造では、我々は多くの異なる活性化機能を試すことができます
。2.畳み込みニューラルネットワークニューラルネットワークコンボリューションコンボリューション層、推奨励起関数がRELUある
ニューラルネットワークで流通している3リカレントニューラルネットワーク、推奨TANHまたはreluです

様々な活性化関数「破壊曲げ効果」

import torch
import torch.nn.functional as F     # 激励函数都在这
from torch.autograd import Variable
import matplotlib.pyplot as plt
# 做一些假数据来观看图像

# 函数的作用是,返回一个一维的tensor(张量),这个张量包含了从start到end,分成steps个线段得到的向量。常用的几个变量
x = torch.linspace(-5, 5, 200)#生成线性的空间
x = Variable(x)#转化成张量

x_np = x.data.numpy()   # 换成 numpy array, 出图时用

# 几种常用的 激励函数

y_relu = F.relu(x).data.numpy()
y_sigmoid = F.sigmoid(x).data.numpy()
y_tanh = F.tanh(x).data.numpy()
y_softplus = F.softplus(x).data.numpy()
# y_softmax = F.softmax(x)  softmax 比较特殊, 不能直接显示, 不过他是关于概率的, 用于分类

#将掰弯后的线性函数显示出来
plt.figure(1, figsize=(8, 6))
plt.subplot(221)
plt.plot(x_np, y_relu, c='red', label='relu')
plt.ylim((-1, 5))
plt.legend(loc='best')

plt.subplot(222)
plt.plot(x_np, y_sigmoid, c='red', label='sigmoid')
plt.ylim((-0.2, 1.2))
plt.legend(loc='best')

plt.subplot(223)
plt.plot(x_np, y_tanh, c='red', label='tanh')
plt.ylim((-1.2, 1.2))
plt.legend(loc='best')

plt.subplot(224)
plt.plot(x_np, y_softplus, c='red', label='softplus')
plt.ylim((-0.2, 6))
plt.legend(loc='best')

plt.show()

おすすめ

転載: www.cnblogs.com/mengxiaoleng/p/11778711.html