版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第PyTorch詳解經(jīng)典網(wǎng)絡(luò)種含并行連結(jié)的網(wǎng)絡(luò)GoogLeNet實現(xiàn)流程目錄1.Inception塊2.構(gòu)造GoogLeNet網(wǎng)絡(luò)3.FashionMNIST訓(xùn)練測試含并行連結(jié)的網(wǎng)絡(luò)GoogLeNet
在GoogleNet出現(xiàn)值前,流行的網(wǎng)絡(luò)結(jié)構(gòu)使用的卷積核從11到1111,卷積核的選擇并沒有太多的原因。GoogLeNet的提出,說明有時候使用多個不同大小的卷積核組合是有利的。
importtorch
fromtorchimportnn
fromtorch.nnimportfunctionalasF
1.Inception塊
Inception塊是GoogLeNet的基本組成單元。Inception塊由四條并行的路徑組成,每個路徑使用不同大小的卷積核:
路徑1:使用11卷積層;
路徑2:先對輸出執(zhí)行11卷積層,來減少通道數(shù),降低模型復(fù)雜性,然后接33卷積層;
路徑3:先對輸出執(zhí)行11卷積層,然后接55卷積層;
路徑4:使用33最大匯聚層,然后使用11卷積層;
在各自路徑中使用合適的padding,使得各個路徑的輸出擁有相同的高和寬,然后將每條路徑的輸出在通道維度上做連結(jié),作為Inception塊的最終輸出.
classInception(nn.Module):
def__init__(self,in_channels,out_channels):
super(Inception,self).__init__()
#路徑1
c1,c2,c3,c4=out_channels
self.route1_1=nn.Conv2d(in_channels,c1,kernel_size=1)
#路徑2
self.route2_1=nn.Conv2d(in_channels,c2[0],kernel_size=1)
self.route2_2=nn.Conv2d(c2[0],c2[1],kernel_size=3,padding=1)
#路徑3
self.route3_1=nn.Conv2d(in_channels,c3[0],kernel_size=1)
self.route3_2=nn.Conv2d(c3[0],c3[1],kernel_size=5,padding=2)
#路徑4
self.route4_1=nn.MaxPool2d(kernel_size=3,stride=1,padding=1)
self.route4_2=nn.Conv2d(in_channels,c4,kernel_size=1)
defforward(self,x):
x1=F.relu(self.route1_1(x))
x2=F.relu(self.route2_2(F.relu(self.route2_1(x))))
x3=F.relu(self.route3_2(F.relu(self.route3_1(x))))
x4=F.relu(self.route4_2(self.route4_1(x)))
returntorch.cat((x1,x2,x3,x4),dim=1)
2.構(gòu)造GoogLeNet網(wǎng)絡(luò)
順序定義GoogLeNet的模塊。
第一個模塊,順序使用三個卷積層。
#模型的第一個模塊
b1=nn.Sequential(
nn.Conv2d(1,64,kernel_size=7,stride=2,padding=3,),
nn.ReLU(),
nn.MaxPool2d(kernel_size=3,stride=2,padding=1),
nn.Conv2d(64,64,kernel_size=1),
nn.ReLU(),
nn.Conv2d(64,192,kernel_size=3,padding=1),
nn.ReLU(),
nn.MaxPool2d(kernel_size=3,stride=2,padding=1)
第二個模塊,使用兩個Inception模塊。
#Inception組成的第二個模塊
b2=nn.Sequential(
Inception(192,(64,(96,128),(16,32),32)),
Inception(256,(128,(128,192),(32,96),64)),
nn.MaxPool2d(kernel_size=3,stride=2,padding=1)
)
第三個模塊,串聯(lián)五個Inception模塊。
#Inception組成的第三個模塊
b3=nn.Sequential(
Inception(480,(192,(96,208),(16,48),64)),
Inception(512,(160,(112,224),(24,64),64)),
Inception(512,(128,(128,256),(24,64),64)),
Inception(512,(112,(144,288),(32,64),64)),
Inception(528,(256,(160,320),(32,128),128)),
nn.MaxPool2d(kernel_size=3,stride=2,padding=1)
)
第四個模塊,傳來兩個Inception模塊。
GoogLeNet使用avgpoolinglayer代替了fully-connectedlayer。一方面降低了維度,另一方面也可以視為對低層特征的組合。
#Inception組成的第四個模塊
b4=nn.Sequential(
Inception(832,(256,(160,320),(32,128),128)),
Inception(832,(384,(192,384),(48,128),128)),
nn.AdaptiveAvgPool2d((1,1)),
nn.Flatten()
)
net=nn.Sequential(b1,b2,b3,b4,nn.Linear(1024,10))
x=torch.randn(1,1,96,96)
forlayerinnet:
x=layer(x)
print(layer.__class__.__name__,"outputshape:",x.shape)
輸出:
Sequentialoutputshape:torch.Size([1,192,28,28])
Sequentialoutputshape:torch.Size([1,480,14,14])
Sequentialoutputshape:torch.Size([1,832,7,7])
Sequentialoutputshape:torch.Size([1,1024])
Linearoutputshape:torch.Size([1,10])
3.FashionMNIST訓(xùn)練測試
defload_datasets_Cifar10(batch_size,resize=None):
trans=[transforms.ToTensor()]
ifresize:
transform=trans.insert(0,transforms.Resize(resize))
trans=transforms.Compose(trans)
train_data=torchvision.datasets.CIFAR10(root="../data",train=True,transform=trans,download=True)
test_data=torchvision.datasets.CIFAR10(root="../data",train=False,transform=trans,download=True)
print("Cifar10下載完成...")
return(torch.utils.data.DataLoader(train_data,batch_size,shuffle=True),
torch.utils.data.DataLoader(test_data,batch_size,shuffle=False))
defload_datasets_FashionMNIST(batch_size,resize=None):
trans=[transforms.ToTensor()]
ifresize:
transform=trans.insert(0,transforms.Resize(resize))
trans=transforms.Compose(trans)
train_data=torchvision.datasets.FashionMNIST(root="../data",train=True,transform=trans,download=True)
test_data=torchvision.datasets.FashionMNIST(root="../data",train=False,transform=trans,download=True)
print("FashionMNIST下載完成...")
return(torch.utils.data.DataLoader(train_data,batch_size,shuffle=True),
torch.utils.data.DataLoader(test_data,batch_size,shuffle=False))
defload_datasets(dataset,batch_size,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026貴州中醫(yī)藥大學(xué)博士后招聘備考題庫及1套完整答案詳解
- 2026貴州醫(yī)科大學(xué)附屬白云醫(yī)院養(yǎng)老護理員招聘8人備考題庫及答案詳解(奪冠系列)
- 寶寶皮膚護理與預(yù)防濕疹
- 2025 小學(xué)一年級道德與法治上冊獨自在家不害怕課件
- 2026年工地安全管理標(biāo)準(zhǔn)化建設(shè)
- 遠(yuǎn)程會診護理的經(jīng)濟效益
- 職業(yè)醫(yī)學(xué)與工程學(xué)的聯(lián)合防護模式
- 臨潭事業(yè)編招聘2022年考試模擬試題及答案解析42
- 職業(yè)健康素養(yǎng)對醫(yī)療員工組織承諾的預(yù)測作用
- 職業(yè)健康檔案電子化傳輸過程中的加密技術(shù)應(yīng)用
- 2026云南昭通市搬遷安置局招聘公益性崗位人員3人備考題庫及答案詳解(考點梳理)
- 2026中國電信四川公用信息產(chǎn)業(yè)有限責(zé)任公司社會成熟人才招聘備考題庫及一套答案詳解
- 2025-2030心理健康行業(yè)市場發(fā)展分析及趨勢前景與投資戰(zhàn)略研究報告
- 技術(shù)副總年終總結(jié)
- 《馬年馬上有錢》少兒美術(shù)教育繪畫課件創(chuàng)意教程教案
- 天津市專升本高等數(shù)學(xué)歷年真題(2016-2025)
- 2025年化工原理考試題及答案
- 湖南省益陽市2024-2025學(xué)年高二上學(xué)期語文1月期末考試試卷(含答案)
- 幕墻工程售后質(zhì)量保障服務(wù)方案
- 鋁合金鑄造項目可行性研究報告
- 2024年西藏自治區(qū)事業(yè)單位《職業(yè)能力傾向測驗(D類)》考試真題及答案
評論
0/150
提交評論