1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        深度學(xué)習(xí) | 學(xué)習(xí)第一個卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)

        共 4946字,需瀏覽 10分鐘

         ·

        2024-04-11 08:41

        Hey 朋友,點擊藍(lán)字關(guān)注嗎?

        ec50f893c4e1b7cf1829e8993ed10618.webp


        深度學(xué)習(xí)




        學(xué)習(xí)第一個卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)



        Hi~ 大家好。


        今天學(xué)習(xí)了第一個深度學(xué)習(xí)的小程序,為了加深理解,對程序進行了逐行解析,并在此進行記錄分享,歡迎感興趣的朋友一起討論學(xué)習(xí)。


        # 1

        先給出完整程序:


                  
                    import torch.nn as nn
                  
                  
                    import torch.nn.functional as F
                  
                  
                    
                      

        class Net(nn.Module): def __init__(self): # nn.Module子類的函數(shù)必須在構(gòu)造函數(shù)中執(zhí)行父類的構(gòu)造函數(shù) # 下式等價于nn.Module.__init__(self) super(Net, self).__init__()

        # 卷積層 '1'表示輸入圖片為單通道, '6'表示輸出通道數(shù),'5'表示卷積核為5*5 self.conv1 = nn.Conv2d(1, 6, 5) # 卷積層 self.conv2 = nn.Conv2d(6, 16, 5) # 仿射層/全連接層,y = Wx + b self.fc1 = nn.Linear(16*5*5, 120) self.fc2 = nn.Linear(120, 84) self.fc3 = nn.Linear(84, 10)

        def forward(self, x): # 卷積 -> 激活 x = F.max_pool2d(F.relu(self.conv1(x)), (2, 2)) x = F.max_pool2d(F.relu(self.conv2(x)), 2) # reshape,‘-1’表示自適應(yīng) x = x.view(x.size()[0], -1) x = F.relu(self.fc1(x)) x = F.relu(self.fc2(x)) x = self.fc3(x) return x

        net = Net() print(net)




        # 2


        下面進行程序分析:


        首先導(dǎo)入必需的庫


                  
                    import torch.nn as nn
                  
                  
                    import torch.nn.functional as F
                  
                


        torch.nn: 這個模塊包含了構(gòu)建神經(jīng)網(wǎng)絡(luò)所需的所有構(gòu)件,比如層結(jié)構(gòu)(線性層、卷積層等)和一些激活函數(shù)。每個模塊都是nn.Module的子類,并且是為了方便模型構(gòu)建而抽象出的高級接口。

        torch.nn.functional: 提供了一些函數(shù)式的接口,用于直接對輸入進行操作,如激活函數(shù)(ReLU等)、池化函數(shù)等。這些函數(shù)通常是無狀態(tài)的,即不包含可訓(xùn)練參數(shù)。


        定義神經(jīng)網(wǎng)絡(luò)


                  
                    
                      class Net(nn.Module):
                    
                  
                


        這里定義了一個名為Net的類,它繼承自nn.Module。在PyTorch中,自定義的網(wǎng)絡(luò)模型都應(yīng)該繼承自nn.Module類,這個基類提供了模型需要的大部分功能,如參數(shù)管理、模型保存與加載等。


        構(gòu)造函數(shù)


                  
                    def __init__(self):    
                  
                  
                    super(Net, self).__init__()
                  
                


        在Net的構(gòu)造函數(shù)中,首先調(diào)用super(Net, self).__init__()以確保父類nn.Module的構(gòu)造函數(shù)被正確執(zhí)行。這是初始化繼承自其他Python類的自定義類的標(biāo)準(zhǔn)做法。


        定義層結(jié)構(gòu)


                  
                    self.conv1 = nn.Conv2d(1, 6, 5) 
                  
                  
                    self.conv2 = nn.Conv2d(6, 16, 5) 
                  
                  
                    self.fc1 = nn.Linear(16*5*5, 120) 
                  
                  
                    self.fc2 = nn.Linear(120, 84) 
                  
                  
                    self.fc3 = nn.Linear(84, 10)
                  
                


        self.conv1和self.conv2定義了兩個卷積層。nn.Conv2d的參數(shù)分別代表輸入通道數(shù)、輸出通道數(shù)和卷積核的尺寸。例如,self.conv1接收單通道圖像,輸出6個通道的特征映射,使用5x5的卷積核。

        self.fc1, self.fc2, self.fc3定義了三個全連接層(也稱線性層)。nn.Linear的參數(shù)分別代表輸入特征數(shù)和輸出特征數(shù)。例如,self.fc1接收1655大小的輸入(來自前一層的輸出),并輸出120個特征。


        前向傳播


                  
                    
                      def forward(self, x)
                      :
                    
                  
                

        forward函數(shù)定義了數(shù)據(jù)通過網(wǎng)絡(luò)的方式。x是輸入數(shù)據(jù)。


        解釋

                  
                    x = F.max_pool2d(F.relu(self.conv1(x)), (2, 2)) 
                  
                  
                    x = F.max_pool2d(F.relu(self.conv2(x)), 2)x = x.view(x.size()[0], -1) 
                  
                  
                    x = F.relu(self.fc1(x)) 
                  
                  
                    x = F.relu(self.fc2(x)) 
                  
                  
                    x = self.fc3(x)
                  
                


        在每個卷積層后,使用ReLU函數(shù)作為激活函數(shù),隨后應(yīng)用最大池化(F.max_pool2d)以減少特征維度和增強模型的泛化能力。池化層的參數(shù)指定了池化窗口的大小。


        x.view(x.size()[0], -1)這行代碼將多維特征圖轉(zhuǎn)換(或稱為扁平化)為一維向量,以便全連接層可以處理。這是從卷積層到全連接層過渡的常見做法。


        數(shù)據(jù)通過全連接層序列,其中前兩層使用ReLU激活函數(shù),最后一層的輸出可以用于計算分類任務(wù)的概率分布(通常在此之后會加上Softmax層進行多分類問題的概率輸出)。



        總結(jié):這個網(wǎng)絡(luò)架構(gòu)是一個經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),適合處理圖像數(shù)據(jù)。通過兩個卷積層提取空間特征,然后通過全連接層進行分類。每一層都有其特定的作用和配置,例如卷積層用于提取圖像特征,全連接層用于將這些特征映射到最終的輸出類別。這種結(jié)構(gòu)的網(wǎng)絡(luò)在圖像識別、分類任務(wù)中非常有效。






        494969dc27418c36723257c982198330.webp


        聲明:轉(zhuǎn)載或者引用本文內(nèi)容請聯(lián)系本文作者。



          - end -  


        視覺選型|機器人選型|手眼標(biāo)定

        圖像處理|視覺軟件開發(fā)|案例應(yīng)用分享



        瀏覽 41
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            аⅴ天堂中文在线网 | 中文字幕一区二区三区四区欧美 | 麻豆久久3| 龙的两根好大拔不出去h | 国产h视频在线 | 簧片在线你懂的在线观看 | 午夜久久乐 | 女人被添荫蒂视频y | 日日弄天天弄美女BBBB | 91爱爱·co m |