優達學城深度學習之七——TensorFlow卷積神經網絡

      網友投稿 982 2022-05-30

      一、膠囊網絡

      池化運算會丟失一些圖像信息。這是因為為了獲得更小的特征級圖像表示,池化會丟棄像素信息。與池化層相比,有一些分類方法不會丟棄空間信息,而是學習各個部分之間的關系(例如眼睛、鼻子和嘴之間的空間關系)。

      學習各部分之間的空間關系的一種方法就叫膠囊網絡。

      膠囊網絡能夠從圖像中檢測出對象的各個部分,并表示這些部分之間的空間關系。如果對象(例如人臉)具有不同的形態和典型數量的特征(眼睛、鼻子、嘴),膠囊網絡便能夠識別同一對象,即使沒有在訓練數據里見過這些形態。

      膠囊網絡由父節點和子節點組成,這些節點構成了對象的完整樣貌。

      在上述示例中,模型能夠識別葉節點中的人臉部分(眼睛、鼻子、嘴等),然后在父節點中形成更完整的人臉部分。

      什么是膠囊

      膠囊實際上是節點集合,每個節點都包含關于特定部分的信息,例如寬度、方向、顏色等特性。注意,每個膠囊都輸出一個向量,該向量由大小和方向組成。

      大小 (m) = 某個部分存在的概率;值在 0 到 1 之間。

      方向 (theta) = 某個部分的狀態。

      我們可以對這些輸出向量執行數學運算并構建一個解析樹,最終識別出由多個小部分組成的完整對象。

      大小是一個特殊的屬性,即使對象朝著不同的方向,大小也應該很大,如下圖所示。

      增加深度

      pytorch層級

      卷積層,通常我們在PyTorch 中使用?nn.Conv2d?定義卷積層,并指定以下參數:

      nn.conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0)

      in_channels 是指輸入深度。對于灰階圖像來說,深度 = 1

      out_channels 是指輸出深度,或你希望獲得的過濾圖像數量

      kernel_size 是卷積核的大小(通常為 3,表示 3x3 核)

      stride 和 padding 具有默認值,但是應該根據你希望輸出在空間維度 x, y 里具有的大小設置它們的值

      pytorch中的卷積層

      要在 PyTorch 中創建卷積層,必須首先導入必要的模塊:

      import torch.nn as nn

      然后定義卷積層和模型的前饋行為(輸入如何經過網絡層級)。首先必須定義一個 Model 類并填寫兩個函數。

      你可以通過以下格式在?__init__?函數里定義卷積層:

      self.conv1=nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0))

      forward

      然后在 forward 函數里引用該層級!在此例中,我傳入了輸入圖像?x,并向此層的輸出應用了 ReLU 函數。

      x=F.relu(self.conv1(x))

      參數

      必須傳遞以下參數:

      in_channels?- 輸入數量(深度),例如 RGB 圖像是 3。

      out_channels?- 輸出通道的數量,即卷積層包含的過濾“圖像”數量,或者將應用到輸入上的唯一卷積核數量。

      kernel_size?- 表示(方形)卷積核的高度和寬度。

      你還可以調整其他可選參數:

      stride?- 卷積步長。如果不指定任何值,stride?將設為?1。

      padding?- 輸入數組周圍的 0 邊。如果不指定任何值,padding?將設為?0。

      注意:可以將?kernel_size?和?stride?表示為數字或元組。

      你還可以設置很多其他可調參數,從而更改卷積層的行為。要了解詳情,請參閱此官方文檔。

      池化層

      池化層的參數是核大小和步長。通常和下采樣因子的值一樣。例如,以下代碼將使輸入的 x-y 維度下采樣到一半大小:

      self.pool=nn.MaxPool2d(2,2)

      以下代碼將池化層應用到了 forward 函數。

      x=F.relu(self.conv1(x))

      x=self.pool(x)

      卷積示例 1

      假設我要構建一個 CNN,輸入層接受的是 200 x 200 像素(對應于高 200、寬 200、深 1 的三維數組)的灰階圖像。然后,假設下一層是一個卷積層,包含 16 個過濾器,每個過濾器的寬和高都是 2。在進行卷積運算時,我希望過濾器一次跳過 2 個像素。但是我不希望過濾器越過圖像邊界;換句話說,我不想用 0 填充圖像。要構建此卷積層,我會使用以下代碼:

      self.conv1=nn.Conv2d(1,16,2,stride=2)

      序列模型

      我們還可以在?__init__?函數里使用?Sequential?封裝容器,這樣就能在 PyTorch 中創建 CNN 模型。序列模型使我們能夠堆疊不同的層級,并在層級之間指定激活函數。

      def __init__(self):

      super(ModelName, self).__init__()

      self.features = nn.Sequential(

      nn.Conv2d(1, 16, 2, stride=2),

      nn.MaxPool2d(2, 2),

      優達學城深度學習之七——TensorFlow卷積神經網絡

      nn.ReLU(True),

      nn.Conv2d(16, 32, 3, padding=1),

      nn.MaxPool2d(2, 2),

      nn.ReLU(True)

      TensorFlow 神經網絡

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:TX2刷機與相關軟件安裝
      下一篇:華為云嚴選中小學智慧校園上線,助力教育信息化2.0
      相關文章
      亚洲一区中文字幕在线观看| 中文字幕亚洲精品| 色婷五月综激情亚洲综合| 色婷婷六月亚洲婷婷丁香| 狠狠色伊人亚洲综合成人| 亚洲熟女一区二区三区| 4338×亚洲全国最大色成网站| 成人婷婷网色偷偷亚洲男人的天堂 | 午夜亚洲国产精品福利| 亚洲youwu永久无码精品| 中文字幕亚洲情99在线| 亚洲一卡2卡3卡4卡乱码 在线| 色老板亚洲视频免在线观| 亚洲伦理中文字幕| 亚洲色精品三区二区一区| 亚洲丰满熟女一区二区哦| 麻豆亚洲AV成人无码久久精品 | 亚洲AV永久无码精品一百度影院 | 中文字幕不卡亚洲| 国产亚洲精品影视在线产品 | 久久精品国产亚洲AV久| 美女视频黄免费亚洲| 亚洲日本国产综合高清| 亚洲欧美日韩久久精品| 国产精品亚洲一区二区无码| 亚洲精品高清一二区久久| 在线观看国产区亚洲一区成人 | 亚洲国产日韩在线| 亚洲综合精品成人| 国产亚洲人成在线播放| 亚洲精品第一国产综合精品99 | 亚洲熟妇无码八AV在线播放| 亚洲动漫精品无码av天堂| 久久久婷婷五月亚洲97号色| 亚洲国产视频一区| 亚洲熟女综合一区二区三区| 激情小说亚洲色图| 亚洲综合国产一区二区三区| 亚洲A∨无码一区二区三区| 亚洲第一香蕉视频| 亚洲日韩精品国产3区|