當前位置:
首頁 >
初识卷积神经网络
發布時間:2025/3/15
51
豆豆
一、LeNet網絡(1998)
LeNet網絡有五層。兩個卷積層,三個全連接層。這里說的卷積層包括激活層和池化層,全連接層包括連接層和激活層。
self.conv = torch.nn.Sequential(torch.nn.Conv2d(in_channels=1,out_channels=6,kernel_size=5,stride=1,padding=0),torch.nn.Sigmoid(),torch.nn.MaxPool2d(kernel_size=(2,2),stride=2),torch.nn.Conv2d(in_channels=6,out_channels=16,kernel_size=5,stride=1,padding=0),torch.nn.Sigmoid(),torch.nn.MaxPool2d(kernel_size=(2,2),stride=2)) self.fc = torch.nn.Sequential(torch.nn.Linear(16*4*4,120),torch.nn.Sigmoid(),torch.nn.Linear(120,84),torch.nn.Sigmoid(),torch.nn.Linear(84,10))二、AlexNet網絡(2012)
AlexNet網絡一共有八層,前有五個卷積層,后面為三個全連接層。
self.conv = nn.Sequential(nn.Conv2d(1, 96, 11, 4),nn.ReLU(),nn.MaxPool2d(3, 2), nn.Conv2d(96, 256, 5, 1, 2),nn.ReLU(),nn.MaxPool2d(3, 2),nn.Conv2d(256, 384, 3, 1, 1),nn.ReLU(),nn.Conv2d(384, 384, 3, 1, 1),nn.ReLU(),nn.Conv2d(384, 256, 3, 1, 1),nn.ReLU(),nn.MaxPool2d(3, 2))self.fc = nn.Sequential(nn.Linear(256*5*5, 4096),nn.ReLU(),nn.Dropout(0.5),nn.Linear(4096, 4096),nn.ReLU(),nn.Dropout(0.5),nn.Linear(4096, 10),)激活函數的選取和區別:
1、sigmoid函數:
f(x)=1/(1+e(?x))f(x)={1}/{(1+e^{(-x)})}f(x)=1/(1+e(?x))
(1)sigmoid函數當值特別大或者特別小,會是梯度趨于0,即sigmoid函數飽和使梯度消失。
(2)sigmoid函數輸出不是“零為中心”
(3)指數函數的計算是比較消耗計算資源的。
2、tanh函數
tanh(x)=(1?e?2x)/(1+e?2x)tanh(x) = {(1-e^{-2x})/(1+e^{-2x})}tanh(x)=(1?e?2x)/(1+e?2x)
(1)tanh解決了sigmoid的輸出非“零為中心”的問題
(2)依然有過飽和的問題
(3)依然進行的是指數運算
3、ReLU函數
f(x)=max(0,x)f(x)=max(0,x)f(x)=max(0,x)
(1)解決了梯度消失的問題,至少x在正區間內,神經元不會飽和;
(2)由于ReLU線性、非飽和的形式,在SGD中能夠快速收斂;
(3)運算速度要快很多。ReLU函數只有線性關系,不需要指數計算,不管前向傳播還是反向傳播,計算速度都比sigmoid和tanh快。
還有幾種類似ReLU函數的激活函數,這里不詳細說了
總結
- 上一篇: mysql根据已有表创建新表_SQL根据
- 下一篇: 卷积神经网络CNN(3)—— FCN(F