动量梯度下降python代码
时间: 2024-03-10 11:42:42 浏览: 77
动量梯度下降(Momentum Gradient Descent)是一种优化算法,用于训练神经网络模型。它通过引入动量的概念,加速收敛过程并减少震荡。
以下是一个简单的动量梯度下降的Python代码示例:
```python
import numpy as np
def momentum_gradient_descent(X, y, learning_rate=0.01, momentum=0.9, num_iterations=100):
num_samples, num_features = X.shape
weights = np.zeros(num_features)
velocity = np.zeros(num_features)
for i in range(num_iterations):
# 计算梯度
gradient = np.dot(X.T, (np.dot(X, weights) - y)) / num_samples
# 更新速度
velocity = momentum * velocity - learning_rate * gradient
# 更新权重
weights += velocity
return weights
# 示例用法
X = np.array([[1, 2], [3, 4], [5, 6]])
y = np.array([3, 5, 7])
weights = momentum_gradient_descent(X, y)
print("Weights:", weights)
```
上述代码中,`momentum_gradient_descent`函数接受输入特征矩阵`X`和目标值向量`y`,以及可选的学习率`learning_rate`、动量参数`momentum`和迭代次数`num_iterations`。函数内部使用梯度下降算法更新权重,并返回最终的权重向量。
阅读全文