动手深度学习—学习笔记1

任务一学习内容:
线性回归
线性回归:单层神经网络,基本要素包括模型,训练数据,损失函数和优化算法

训练数据:我们通常收集⼀系列的真实数据,例如多栋房屋的真实售出价格和它们对应的⾯积和房龄。我们希望在这个数据上⾯寻找模型参数来使模型的预测价格与真实价格的误差最小。在机器学习术语⾥,该数据集被称为训练数据集(training data set)或训练集(training set),⼀栋房屋被称为⼀个样本(sample),其真实售出价格叫作标签(label),⽤来预测标签的两个因素叫作特征(feature)。特征用来表征样本的特点。

优化算法:小批量随机梯度下降(mini-batch stochastic gradient descent)在深度学习中被广泛使用。它的算法很简单:先选取一组模型参数的初始值,如随机选取;接下来对参数进行多次迭代,使每次迭代都可能降低损失函数的值。在每次迭代中,先随机均匀采样一个由固定数目训练数据样本所组成的小批量(mini-batch)B,然后求小批量中数据样本的平均损失有关模型参数的导数(梯度),最后用此结果与预先设定的一个正数的乘积作为模型参数在本次迭代的减小量。
动手深度学习—学习笔记1
学习率: η代表在每次优化中,能够学习的步长的大小
批量大小: B是小批量计算中的批量大小batch size
这里的批量大小与超参数都是人为设定的,并不是通过模型训练出来的,因此叫做超参数

python 函数:
torch.ones()/torch.zeros(),与MATLAB的ones/zeros很接近。初始化生成
均匀分布
torch.rand(*sizes, out=None) → Tensor
返回一个张量,包含了从区间[0, 1)的均匀分布中抽取的一组随机数。张量的形状由参数sizes定义。
标准正态分布
torch.randn(*sizes, out=None) → Tensor
返回一个张量,包含了从标准正态分布(均值为0,方差为1,即高斯白噪声)中抽取的一组随机数。张量的形状由参数sizes定义。
torch.mul(a, b)是矩阵a和b对应位相乘,a和b的维度必须相等,比如a的维度是(1, 2),b的维度是(1, 2),返回的仍是(1, 2)的矩阵
torch.mm(a, b)是矩阵a和b矩阵相乘,比如a的维度是(1, 2),b的维度是(2, 3),返回的就是(1, 3)的矩阵。numpy中矩阵乘法用dot函数。
torch.Tensor是一种包含单一数据类型元素的多维矩阵,定义了7种CPU tensor和8种GPU tensor类型。
torch.tensor(data, dtype=None, device=None,equires_grad=False) → Tensor
random.shuffle(a):用于将一个列表中的元素打乱。shuffle() 是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法。
backward()是pytorch中提供的函数,配套有require_grad:
1.所有的tensor都有.requires_grad属性,可以设置这个属性.x = tensor.ones(2,4,requires_grad=True)
2.如果想改变这个属性,就调用tensor.requires_grad_()方法:   x.requires_grad_(False)
(以上是评论里一个孩子整理的,对我自己帮助很大。)

损失函数中
return (y_hat - y.view(y_hat.size())) ** 2 / 2 真实值y变形成预测值y_hat的形状。 采用均方误差公式,

在训练中,我们将多次迭代模型参数。在每次迭代中,我们根据当前读取的小批量数据样本(特征X和标签y),通过调⽤反向函数backward计算小批量随机梯度,并调⽤优化算法sgd迭代模型参数。
for epoch in range(num_epochs):
for X, y in data_iter(batch_size, features, labels):
l = loss(net(X, w, b), y).sum()
l.backward()
sgd([w, b], lr, batch_size)

矢量计算加法运算用的是广播机制。
动手深度学习—学习笔记1

Softmax与分类模型
Softmax回归用于离散值的预测,适用于分类问题,它使用softmax运算输出类别的概率分布。softmax回归与线性回归一样将输入特征与权重做线性叠加,softmax回归是一个单层神经网络,输出个数等于分类问题中的类别个数。
交叉熵适合衡量两个概率分布的差异。

动手深度学习—学习笔记1root(string)– 数据集的根目录,其中存放processed/training.pt和processed/test.pt文件。
train(bool, 可选)– 如果设置为True,从training.pt创建数据集,否则从test.pt创建。
download(bool, 可选)– 如果设置为True,从互联网下载数据并放到root文件夹下。如果root目录下已经存在数据,不会再次下载。
transform(可被调用 , 可选)– 一种函数或变换,输入PIL图片,返回变换之后的数据。如:transforms.RandomCrop。
target_transform(可被调用 , 可选)– 一种函数或变换,输入目标,进行变换.

dim
动手深度学习—学习笔记1
dim为0,对列求和
dim为1,对行求和
keepdim(bool)在结果中是否保持行/列特征。

To be continued!