pytorch线性回归
线性回归假设输出与各个输入之间是线性关系:y = wx+b
pytorch定义线性回归模型:
def linreg(X, w, b):
return torch.mm(X, w) + b
线性回归常用损失函数是平方损失:
def squared_loss(y_hat, y):
return (y_hat - y.view(y_hat.size())) ** 2 / 2
优化函数 - 随机梯度下降:
小批量随机梯度下降(mini-batch stochastic gradient descent)在深度学习中被广泛使用。它的算法很简单:先选取一组模型参数的初始值,如随机选取;接下来对参数进行多次迭代,使每次迭代都可能降低损失函数的值。在每次迭代中,先随机均匀采样一个由固定数目训练数据样本所组成的小批量(mini-batch) B ,然后求小批量中数据样本的平均损失有关模型参数的导数(梯度),最后用此结果与预先设定的一个正数的乘积作为模型参数在本次迭代的减小量。
def sgd(params, lr, batch_size):
for param in params:
param.data -= lr * param.grad / batch_size # ues .data to operate param without gradient track
pytorch 实现线性回归的完整流程:
- 读取数据集
- 初始化模型参数
- 定义模型
- 定义损失函数
- 定义优化函数
- 模型训练