请注意,我们正在构建一个差分张量,将它们逐项求平方,最后对获得的张量按照各项求平均生成一个标量损失函数。这是一个均方损失。
我们现在可以初始化参数,调用模型,
并检查损失值:
我们实现了本节中的模型和损失。我们终于得到了这个例子的要点:我们如何估计w和b以使损失达到最小?我们将首先手工解决问题,然后学习如何使用PyTorch的超能力,以更通用、现成的方式解决同样的问题。
广播
我们在第三章提到了广播,我们承诺在需要的时候会更仔细地研究它。在我们的例子中,我们有两个标量(零维张量)w和b,我们用它们相乘,然后把它们加到长度为b的向量(一维张量)上。
通常,在PyTorch的早期版本中,我们也只能对相同形状的参数使用元素级的二元操作,如加法、减法、乘法和除法。每个张量中匹配位置的条目将用于计算结果张量中的相应条目。
广播,在NumPy和PyTorch中得到了广泛的使用,它放宽了大多数二元操作的这一假设。使用以下规则来匹配张量元素:
√ 对于从后面开始计算的每个索引维度,如果其中一个操作数在该维度中的大小为1,PyTorch将使用沿该维度的单个条目以及沿该维度的另一个张量中的每个条目。
√ 如果两个尺寸都大于1,则必须相同,并使用自然匹配。
√ 如果一个张量比另一个张量有更多的索引维度,那么另一个张量的整体将用于这些维度上的每个条目。
这听起来很复杂(如果我们不密切注意的话,它很容易出错,这就是为什么我们在第3.4节中命名了张量维度),但是通常,我们可以写下张量维度来查看发生了什么,或者通过使用空间维度来显示广播并描绘发生了什么,如下图所示。
当然,如果我们没有一些代码示例,那么这些就仅仅是理论了:
剩下的内容,请继续关注「数据与智能」~