影像分類超參數 - Amazon SageMaker

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

影像分類超參數

超參數是在機器學習模型開始學習之前設定的參數。Amazon SageMaker 內建影像分類演算法支援下列超參數。如需影像分類超參數調校的資訊,請參閱 調校影像分類模型

參數名稱 描述
num_classes

輸出類別的數量。此參數會定義網路輸出的維度,且通常會以資料集中的類別數量來設定該維度。

除了multi-class 分類外,也支援 multi-label 分類。如需如何利用擴增資訊清單檔案使用 multi-label 分類的詳細資料,請參閱 影像分類演算法的輸入/輸出界面

必要

有效值:正整數

num_training_samples

輸入資料集中的訓練範例數量。

如果此值與訓練集中的範例數量不相符,則表示 lr_scheduler_step 參數未定義行為,可能會影響分散式訓練的準確度。

必要

有效值:正整數

augmentation_type

資料增強類型。您可以採用多種指定方式來增強輸入影像,如下所述。

  • crop:隨機剪裁影像,並將該影像水平翻轉

  • crop_color:除了「剪裁」影像外,系統會將落在 [-36, 36]、[-50, 50] 與 [-50, 50] 範圍內的三個隨機數值,分別新增至對應的色調、飽和度與亮度通道

  • crop_color_transform:除了執行 crop_color 的作業外,系統亦會將隨機轉換 (包括旋轉、傾斜與變動長寬比) 套用至該影像。最大旋轉角度為 10 度;最大傾斜率為 0.1;最大長寬比變動率為 0.25。

選用

有效值:cropcrop_colorcrop_color_transform

預設值:沒有預設值

beta_1

adam 的 beta1,這是第一刻估計的指數衰減率。

選用

有效值:浮點數。範圍在 [0, 1] 之間。

預設值:0.9

beta_2

adam 的 beta2,這是第二刻估計的指數衰減率。

選用

有效值:浮點數。範圍在 [0, 1] 之間。

預設值:0.999

checkpoint_frequency

存放模型參數的週期 (以 epoch 為單位)。

請注意,所有檢查點檔案都儲存為最終模型檔案 “model.tar.gz” 的一部分,並上傳到 S3 中指定的模型位置。根據訓練期間儲存的檢查點數目,這會成比例地增加模型檔案的大小。

選用

有效值:正整數,且不得大於 epochs

預設值:無預設值 (在有最佳驗證準確度的 epoch 上儲存檢查點。)

early_stopping

True 以在訓練期間使用提前停止的邏輯。False 則不使用它。

選用

有效值:TrueFalse

預設值:False

early_stopping_min_epochs

呼叫提前停止邏輯前,應執行的 epoch 數量下限。只有在 early_stopping = True 時才會使用。

選用

有效值:正整數

預設值:10

early_stopping_patience

若未在相關指標中進行改善,結束培訓前等待的 epoch 數量。只有在 early_stopping = True 時才會使用。

選用

有效值:正整數

預設值:5

early_stopping_tolerance

測量準確度驗證指標中改善的相對容錯度。如準確度中的改善除以過去最佳準確度的比率小於所設定的 early_stopping_tolerance 值,提前停止會將其視為無改善。只有在 early_stopping = True 時才會使用。

選用

有效值:0 ≤ 浮點數 ≤ 1

預設值:0.0

epochs

要訓練的 epoch 數量。

選用

有效值:正整數

預設值:30

eps

adamrmsprop 的 epsilon。該參數通常會設定為較小值,避免要將該值除以 0。

選用

有效值:浮點數。範圍在 [0, 1] 之間。

預設值:1e-8

gamma

rmsprop 的 gamma 值,即平方梯度的移動平均衰減因子。

選用

有效值:浮點數。範圍在 [0, 1] 之間。

預設值:0.9

image_shape

輸入影像的維度,其與網路的輸入層大小相同。該參數的格式定義為「num_channels,高度,寬度」。網路可以處理各種輸入維度,因此影像維度可以輸入任何值。然而,若採用較大的影像維度 ,記憶體容量可能會因而受限。預先訓練的模型只能使用 224 x 224 的固定影像大小。影像分類所使用的影像維度一般為「3,224,224」。這與 ImageNet 資料集類似。

針對訓練,如果任何輸入影像在任一維度中都小於此參數,則訓練失敗。如果影像大於此參數,則會裁切影像的一部分,而裁切的區域由此參數指定。如果已設定超參數 augmentation_type,則會採取隨機裁切;否則,會裁切中央區域。

推論時,輸入影像會調整到訓練期間所使用的 image_shape 影像大小。不會保留長寬比,且不會裁切影像。

選用

有效值:字串

預設值:「3,224,224」

kv_store

分散式訓練期間的權重更新同步模式。各機器能採用同步或非同步的方式來更新權重。同步更新的準確度通常會高於非同步更新,但執行速度較慢。請參閱 MXNet 中的分散式訓練,進一步了解詳細資訊。

此參數不適用於單部機器訓練。

  • dist_sync:所有工作者會在每個批次的作業執行完畢後,同步更新梯度。透過 dist_sync,batch-size 目前可表示各機器所使用的批次大小。所以,假設有 n 部機器使用批次大小 b,則 dist_sync 的批次大小即為「n * b」;此操作與本機的運作方式相似

  • dist_async:此參數會執行非同步更新。從任何機器接收到梯度時,系統即會更新權重;權重更新作業不可部分完成。然而,此操作無法保證更新的先後順序。

選用

有效值:dist_syncdist_async

預設值:沒有預設值

learning_rate

初始學習率。

選用

有效值:浮點數。範圍在 [0, 1] 之間。

預設值:0.1

lr_scheduler_factor

該比率會搭配使用 lr_scheduler_step 參數以降低學習率,其定義為:lr_new = lr_old * lr_scheduler_factor

選用

有效值:浮點數。範圍在 [0, 1] 之間。

預設值:0.1

lr_scheduler_step

要降低學習率的 epoch。如 lr_scheduler_factor 參數所述,系統會依這些 epoch 中的 lr_scheduler_factor 來降低學習率。例如,假設該值的設定為「10, 20」,則系統會依第 10 個 epoch 後的 lr_scheduler_factor 降低學習率,並再次依第 20 個 epoch 後的 lr_scheduler_factor 降低學習率。而 epoch 會以「,」分隔。

選用

有效值:字串

預設值:沒有預設值

mini_batch_size

訓練的批次大小。在單部機器的多 GPU 設定中,每個 GPU 可以處理的訓練範例數為:mini_batch_size/num_gpu。至於 dist_sync 模式中的多部機器訓練,實際批次大小則為:mini_batch_size * 機器數量。請參閱 MXNet 文件,進一步了解詳細資訊。

選用

有效值:正整數

預設值:32

momentum

sgdnag 的動力,其他最佳化工具會忽略此項。

選用

有效值:浮點數。範圍在 [0, 1] 之間。

預設值:0.9

multi_label

用於多標籤分類的標記,其中每個樣本皆可以指派多個標籤。所有記錄類別間的平均準確度。

選用

有效值:0 或 1

預設值:0

num_layers

網路的層級數。對於具有較大圖像尺寸的數據(例如,224x224-類似 ImageNet),我們建議從集合中選擇圖層的數量 [18,34,50,101,152,200]。如果資料的影像尺寸較小 (如 28 x 28 - 類似 CIFAR),則建議您選取 [20, 32, 44, 56, 110] 組的層級數。每個圖層集中的圖層數均以 ResNet paper 張為基礎。在遷移學習中,層級數會定義基本網路的架構,因此僅能選取 [18, 34, 50, 101, 152, 200] 組的層級數。

選用

有效值:[18, 34, 50, 101, 152, 200] 或 [20, 32, 44, 56, 110] 中的正整數

預設值:152

optimizer

最佳化工具類型。如需最佳化工具參數的詳細資訊,請參閱 MXNet 的 API。

選用

有效值:sgdadamrmspropnag 的其中之一。

預設值:sgd

precision_dtype

用於訓練的加權精確度。演算法可以針對加權使用單精確度 (float32) 或半精確度 (float16)。針對加權使用半精確度可減少記憶體的使用。

選用

有效值:float32float16

預設值:float32

resize

調整影像大小以進行訓練後,影像最短邊的像素數目。若未設定此參數,則系統不會重新調整訓練資料的大小。該參數應大於 image_shape 的寬度和高度元件,以免訓練失敗。

使用影像內容類型時需要

使用 RecordIO 內容類型時可選用

有效值:正整數

預設值:沒有預設值

top_k

在訓練期間報告 top-k 準確度。由於 top-1 訓練準確度與回報的定期訓練準確度相同,此參數必須大於 1。

選用

有效值:正整數,且必須大於 1。

預設值:沒有預設值

use_pretrained_model

指出是否要使用預先訓練模型進行訓練的標記。若將此值設定為 1,則系統會載入具備對應層級數的預先訓練模型,藉此進行訓練。且唯有頂端的 FC 層會重新初始化為隨機權重;否則,網路皆是從頭開始訓練。

選用

有效值:0 或 1

預設值:0

use_weighted_loss

指出針對多標籤分類 (只有在 multi_label = 1 時才會使用) 使用加權交叉熵遺失的標記,其中會根據類別的分布計算加權。

選用

有效值:0 或 1

預設值:0

weight_decay

sgdnag 的權重衰減係數,其他最佳化工具會予以忽略。

選用

有效值:浮點數。範圍在 [0, 1] 之間。

預設值:0.0001