Reflection: Deep Learning with R-Ch5.2

imflorachen
6 min readApr 20, 2020

--

### 5.2. TRAINING A CONVNET FROM SCRATCH ON A SMALL DATASET

  • naively training: accuracy 71%
  • data augmentation: 82%
  • feature extraction with a pretrained network: 90–96%
  • fine-tuning: 97%

#### 5.2.1. The relevance of deep learning for small-data problems

  • 深度學習模型本質上具有高度的可重複使用性:例如,可以用在大規模數據集上訓練的圖像分類或語音到文本模型,僅需小修改就可以將其用在不同的問題上。 具體而言,在計算機視覺的情況下,許多預先訓練的模型(通常在ImageNet數據集上進行訓練)現在可以公開下載,並可用於從很少的數據中引導功能強大的視覺模型。

#### 5.2.2. Downloading the data

  • https://www.kaggle.com/c/dogsvscats/data
  • (找不到網址…失效了…)
  • 該數據集包含25,000張狗和貓的圖像(每類12,500張),並且為543 MB(壓縮)。 下載並解壓縮後,您將創建一個包含三個子集的新數據集:一個訓練集,每個類別有1,000個樣本;驗證集,每個類別有500個樣本;測試集,每個類別有500個樣本。

#### 5.2.3. Building your network

  • 由於要處理更大的圖像和更複雜的問題,因此將使網絡變得更大:有另外一個 layer_conv_2d + layer_max_pooling_2d 階段。 這既可以增加網絡容量,又可以進一步減小 feature map (特徵圖)的大小,因此當到達layer_flatten時,它們不會太大。 由於是從150×150大小的輸入(某種程度上是任意選擇)開始的,因此在layer_flatten之前最終得到了7×7大小的特徵圖。
  • 網絡中 feature map 的深度逐漸增加(從32到128),而特徵圖的大小會減小(從148×148減小到7×7)。
  • 要解決的是二元分類問題,因此將以1個單元(大小為1的layer_dense)和Sigmoid激活來結束網絡。

#### 5.2.4. Data preprocessing

1.讀取圖片文件。
2.將JPEG內容解碼為RGB像素網格。
3.將它們轉換為浮點張量。
4.將像素值(0到255之間)重新縮放到[0,1]間隔(神經網絡更喜歡處理較小的輸入值)。

  • Keras包括許多圖像處理幫助工具。 特別是 image_data_generator()函數,該函數可以自動將本機端的圖像文件轉換為成批的預處理張量。
  • 它產生了150×150 RGB圖像(shape (20, 150, 150, 3))和二進制標籤(shape (20))的批次。 每批次有20個樣品(批次大小)。 請注意,生成器無限期地產生這些批處理-它在目標文件夾中的圖像上無限循環
  • steps_per_epoch: 由於數據是無休止地生成的,因此擬合過程需要在聲明一個時期之前知道要從生成器中抽取多少個樣本。
  • validation_data: 可以是數據生成器,但也可以是數組列表。如果將生成器作為validation_data傳遞,則預期該生成器會無休止地生成驗證數據的批處理,因此,還應該指定 validation_steps 參數,該參數告訴過程從驗證生成器中提取多少批用於評估。
  • 因為訓練樣本相對較少(2,000),所以過擬合是很明顯的。 之前已經了解了許多有助於減輕過度擬合的技術,例如 drop out , weight decay(L2正則化)。 現在將使用深度學習模型處理圖像時被普遍使用的一種工具:數據增強。

#### 5.2.5. Using data augmentation

  • 數據增強採用通過大量隨機變換對樣本進行增強的方法,從而從現有的訓練樣本中生成更多的訓練數據,從而產生看起來可信的圖像
  • rotation_range是一個值,單位為度(0–180),該範圍是隨機旋轉圖片的範圍。
  • width_shift和height_shift是在其中垂直或水平隨機轉換圖片的範圍(佔總寬度或高度的一部分)。
  • shear_range用於隨機應用剪切變換。
  • zoom_range用於隨機放大圖片。
  • horizontal_flip用於在水平方向上隨機翻轉一半的圖像,這在沒有水平不對稱性假設的情況下(例如,真實世界的圖片)。
  • fill_mode是用於填充新創建的像素的策略,這些像素可以在旋轉或寬度/高度偏移後出現。
  • 為了進一步解決過度擬合問題,還需要在dense連接的分類器之前向模型添加一個dropout層。
  • 再配一個有dropout的模型
  • 達到86–87%的準確度

--

--

imflorachen
imflorachen

Written by imflorachen

Hi i’m trying to write what i’ve learned from work or from books. Wish I could become a better data scientist.

No responses yet