本节我们将使用刚刚引入的Fashion-MNIST数据集, 并设置数据迭代器的批量大小为256。
※ 初始化模型参数
这里的每个样本都将用固定长度的向量表示。 原始数据集中的每个样本都是28×28的图像。
本节[将展平每个图像,把它们看作长度为784的向量。] 在后面的章节中,我们将讨论能够利用图像空间结构的特征, 但现在我们暂时只把每个像素位置看作一个特征。
在softmax回归中,输出与类别一样多。因为我们的数据集有10个类别,所以网络输出维度为10。 因此,权重将构成一个784×10的矩阵, 偏置将构成一个1×10的行向量。 与线性回归一样,我们将使用正态分布初始化我们的权重w,偏置初始化为0。
※ 定义softmax操作
在实现softmax回归模型之前,先简要回顾一下sum
运算符如何沿着张量中的特定维度工作。
[给定一个矩阵X
,我们可以对所有元素求和], 也可以只求同一个轴上的元素,即同一列(轴0)或同一行(轴1)。
如果X
是一个形状为(2,3)
的张量,我们对列进行求和, 则结果将是一个具有形状(3,)
的向量。 当调用sum
运算符时,我们可以指定保持在原始张量的轴数,而不折叠求和的维度。 这将产生一个具有形状(1, 3)
的二维张量。
0是对列求和,得到一个行向量;1是对行求和,得到一个列向量。
实现softmax的三个步骤:
- 对每个项求幂(使用
exp
); - 对每一行求和(小批量中每个样本是一行),得到每个样本的规范化常数;
- 将每一行除以其规范化常数,确保结果的和为1。
表达式: