深度神經網絡訓練通常會面臨諸如消失/爆炸梯度和內部協變量轉移,減慢訓練和阻礙學習的障礙。 歸一化技術提供了解決方案,批次歸一化(BN)特別突出。 BN可以加速收斂,提高穩定性並增強許多深度學習體系結構的概括。本教程解釋了BN的機制,其數學基礎和Tensorflow/keras實現。 機器學習中的
歸一化標準化輸入數據,使用最小 - 最大縮放,z得分歸一化和對數轉換的日誌轉換等方法。這可以減輕異常效應,改善收斂性並確保合理的特徵比較。 歸一化數據可確保對學習過程的同等特徵貢獻,從而防止大規模特徵主導並導致次優模型性能。 它允許模型更有效地識別有意義的模式。深度學習培訓挑戰包括:
批量歸一化在訓練過程中,在微型批次中的一層激活歸一化。它計算每個特徵的激活的平均值和方差,然後使用這些統計數據進行歸一化。 可學習的參數(γ和β)尺度並移動歸一化激活,從而使模型可以學習最佳的激活分佈。
來源:Yintai MA和Diego Klabjan。
通常在層的線性轉換(例如,在完全連接的層中的矩陣乘法或卷積層中的捲積)和非線性激活函數(例如relu)之前應用
bn通過在每個迷你批次內進行歸一化激活來解決內部協變量的轉移,從而使對後續層的輸入更加穩定。這使得可以更快地通過更高的學習率收斂並降低初始化敏感性。 它還正規化,通過減少對特定激活模式的依賴性來防止過度擬合。
>批准的數學:
>BN在訓練和推理過程中以不同的方式運行。
訓練:
激活(x i)已歸一化:
>
(ε是數值穩定性的小常數)。
>
>推論:批量統計量被使用移動平均值(動量因子α)計算的運行統計(運行均值和方差)替代:
這些運行統計數據和學習的γ和β在推斷期間用於歸一化。
tensorflow實現:
實現注意事項:
import tensorflow as tf from tensorflow import keras # Load and preprocess MNIST data (as described in the original text) # ... # Define the model architecture model = keras.Sequential([ keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)), keras.layers.BatchNormalization(), keras.layers.Conv2D(64, (3, 3), activation='relu'), keras.layers.BatchNormalization(), keras.layers.MaxPooling2D((2, 2)), keras.layers.Flatten(), keras.layers.Dense(128, activation='relu'), keras.layers.BatchNormalization(), keras.layers.Dense(10, activation='softmax') ]) # Compile and train the model (as described in the original text) # ...
放置:線性變換和激活功能之前。
計算開銷:增加內存和訓練時間。
:批處理是一種有力的技術,可改善深度神經網絡訓練。 記住其優勢,實施細節和限制,並考慮其項目在您的項目中的最佳性能。
>以上是批處理:理論和張量實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!