Tensorflow學習筆記No 4 1

2022-02-07 23:23:06 字數 1829 閱讀 7597

簡單介紹cnn卷積神經網路的概念和原理。

已經了解的小夥伴可以跳轉到tensorflow學習筆記no.4.2

學習如和用tensorflow實現簡單的卷積神經網路。

卷積神經網路(convolutional neural network,cnn)是一種前饋神經網路,它的人工神經元可以響應一部分覆蓋範圍內的周圍單元,對於大型影象處理有出色表現。 

卷積神經網路通常包含以下幾種層:

1.1.1區域性感知(local connectivity)

普通神經網路把輸入層和隱含層進行「全連線(full connected)「的設計。從計算的角度來講,相對較小的影象從整幅影象中計算特徵是可行的。但是,如果是更大的影象(如 96x96 的影象),要通過這種全聯通網路的這種方法來學習整幅影象上的特徵,從計算角度而言,將變得非常耗時

卷積層解決這類問題的一種簡單方法是對隱含單元和輸入單元間的連線加以限制:每個隱含單元僅僅只能連線輸入單元的一部分。每個隱含單元連線的輸入區域大小叫r神經元的感受野(receptive field)。

由於卷積層的神經元也是三維的,所以也具有深度。卷積層的引數包含一系列過濾器(filter),每個過濾器訓練乙個深度,有幾個過濾器輸出單元就具有多少深度。

具體如下圖所示,樣例輸入單元大小是32×32×3, 輸出單元的深度是5, 對於輸出單元不同深度的同一位置,與輸入連線的區域是相同的,但是引數(過濾器)不同。

1.1.2空間排列(spatial arrangement)

乙個輸出單元的大小有以下三個量控制:depth, stride 和 zero-padding。

1.1.3卷積(convolution)

這裡簡單介紹一下卷積的工作原理

考慮乙個大小為5×5的影象,和乙個3×3的卷積核。這裡的卷積核共有9個引數。這種情況下,卷積核實際上有9個神經元,他們的輸出又組成乙個3×3的矩陣,稱為特徵圖。第乙個神經元連線到影象的第乙個3×3的區域性,第二個神經元則連線到第二個區域性(注意,有重疊!就跟你的目光掃視時也是連續掃視一樣)。具體如下圖所示。

池化(pool)即下取樣(downsamples),目的是為了減少特徵圖。池化操作對每個深度切片獨立,規模一般為 2*2,相對於卷積層進行卷積運算,池化層進行的運算一般有以下幾種:

* 最大池化(max pooling)。取4個點的最大值。這是最常用的池化方法。

* 均值池化(mean pooling)

。取4個點的均值。

* 高斯池化。借鑑高斯模糊的方法。不常用。

* 可訓練池化。訓練函式 ff ,接受4個點為輸入,出入1個點。不常用。

最常見的池化層是規模為2*2, 步幅為2,對輸入的每個深度切片進行下取樣。每個max操作對四個數進行,如下圖所示:

池化操作將儲存深度大小不變

如果池化層的輸入單元大小不是二的整數倍,一般採取邊緣補零(zero-padding)的方式補成2的倍數,然後再池化。

將卷積層與池化層中得到的張量的維度進行變換,轉變成可以進行分類的一維資料。

4.2中將介紹如何用tensorflow實現cnn卷積神經網路。

tensorflow學習筆記

tensorflow安裝可以直接通過命令列或者原始碼安裝,在此介紹tensorflow8命令列安裝如下 安裝tensorflow sudo pip install upgrade 另外,解除安裝tensorflow命令為 sudo pip uninstall tensorflow tensorflo...

Tensorflow學習筆記

1.如何在虛擬機器中安裝tensor flow 1 首先安裝pip pip install 2 pip install 2.學習tensorflow需要學習 python and linux 3.使用 tensorflow,你必須明白 tensorflow 1 使用圖 graph 來表示計算任務.2...

TensorFlow學習筆記

1 擬合直線 import the library import tensorflow as tf import numpy as np prepare train data train x np.linspace 1,1,100 temp1 train x,temp2 train x.shape,...