Softmax 回归的从零开始实现
理解:https://blog.csdn.net/red_stone1/article/details/80687921
%matplotlib inline
import gluonbook as gb #要把这个包放在同一个根目录下
from mxnet import autograd, nd
#============获取和读取数据使用 Fashion-MNIST 数据集,并设置批量大小为 256
batch_size = 256
train_iter, test_iter = gb.load_data_fashion_mnist(batch_size)#完成了将数据封装成数据迭代器
#这函数中有.vision.FashionMNIST()会自动下载数据还有.DataLoader()这函数是将数据弄成一个数据迭代器
#===========初始化模型参数
#跟线性回归中的例子一样,我们将使用向量表示每个样本。已知每个样本输入是高和宽均为 28 像素的图像。
#模型的输入向量的长度是 28×28=784 :该向量的每个元素对应图像中每个像素。由于图像有 10 个类别,单层神经网络输出层的输出个数为 10。
#所以 Softmax 回归的权重和偏差参数分别为 784×10 和 1×10 的矩阵。
num_inputs=784
num_outputs=10
W=nd.random.normal(scale=0.01,shape=(num_inputs,num_outputs))
b=nd.zeros(num_outputs)
W.attach_grad() #就是为参数梯度的存放开辟了空间,以助于参数更新的时候进行访问
b.attach_grad()
#===========实现 Softmax 运算
#给定一个 NDArray 矩阵X。我们可以只对其中同一列(axis=0)或同一行(axis=1)的元素求和,
# #并在结果中保留行和列这两个维度(keepdims=True)。
# X = nd.array([[1, 2, 3], [4, 5, 6]])
# X.sum(ax