深度神经网络训练通常会面临诸如消失/爆炸梯度和内部协变量转移,减慢训练和阻碍学习的障碍。 归一化技术提供了解决方案,批次归一化(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中文网其他相关文章!