线性回归

损失函数**:在模型训练中,我们需要衡量价格预测值与真实值之间的误差。通常我们会选取一个非负数作为误差,且数值越小表示误差越小。一个常用的选择是平方函数。 它在评估索引为 i 的样本误差的表达式为
image.png

从零开始
1.生成/准备数据集
2.读取数据集
3.初始化模型参数
4.正态分布初始化:np.random.normal(loc(均值),scale(标准差),size(输出形状))
5.全零初始化:np.zeros()
6.定义模型

  • torch.mm(矩阵相乘)
  • torch.mul(点乘)

image.png

  1. def linreg(X, w, b):
  2. return torch.mm(X, w) + b

7.定义损失函数
8.定义优化函数
9.小批量随机梯度下降,参数-学习率*梯度/batch_size
10.训练
11.前向传播
12.求损失
13.反向传播
14.优化参数
15.梯度清零

PyTorch中view的用法

把原先tensor中的数据按照行优先的顺序排成一个一维的数据(这里应该是因为要求地址是连续存储的),然后按照参数组合成其他维度的tensor。比如说是不管你原先的数据是[[[1,2,3],[4,5,6]]]还是[1,2,3,4,5,6],因为它们排成一维向量都是6个元素,所以只要view后面的参数一致,得到的结果都是一样的。比如,

a=torch.Tensor([[[1,2,3],[4,5,6]]])
b=torch.Tensor([1,2,3,4,5,6])
print(a.view(1,6))
print(b.view(1,6))

得到的结果都是tensor([[1., 2., 3., 4., 5., 6.]])

再看一个例子:

a=torch.Tensor([[[1,2,3],[4,5,6]]])
print(a.view(3,2))
a=torch.Tensor([[[1,2,3],[4,5,6]]])
print(a.view(3,2))

将会得到:

tensor([[1., 2.],
       [3., 4.],
       [5., 6.]])

相当于就是从1,2,3,4,5,6顺序的拿数组来填充需要的形状。但是如果您想得到如下的结果:

tensor([[1., 4.],
        [2., 5.],
        [3., 6.]])

就需要使用另一个函数了:permute() 。PyTorch中permute的用法