mini-batch梯度下降 python实现
时间: 2024-10-20 12:11:17 浏览: 32
python实现随机梯度下降法
Mini-batch梯度下降是一种优化算法,它将数据集划分为小批量(mini-batches),然后计算每个批次的梯度并更新模型参数。相比于批量梯度下降( Batch Gradient Descent)一次性处理整个数据集,这种策略可以在大规模数据集上提高训练速度,同时保持足够的精度。
在Python中,比如使用深度学习库TensorFlow或PyTorch,可以按照以下步骤实现mini-batch梯度下降:
**Python示例 (TensorFlow)**:
```python
import tensorflow as tf
# 假设我们有一个简单的线性模型
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(units=1, input_shape=(1,))
])
# 定义损失函数和优化器
loss_fn = tf.keras.losses.MeanSquaredError()
optimizer = tf.optimizers.SGD(learning_rate=0.01)
# 模拟数据
X_train = ... # 输入特征
y_train = ... # 目标值
# Mini-batch大小
batch_size = 32
# 训练循环
for epoch in range(num_epochs):
for i in range(0, len(X_train), batch_size):
# 获取当前批次的数据
batch_X = X_train[i:i+batch_size]
batch_y = y_train[i:i+batch_size]
# 使用优化器计算梯度并更新权重
with tf.GradientTape() as tape:
predictions = model(batch_X)
loss_value = loss_fn(batch_y, predictions)
gradients = tape.gradient(loss_value, model.trainable_variables)
optimizer.apply_gradients(zip(gradients, model.trainable_variables))
阅读全文