输出维度
在softmax 分类中 我们输出与类别一样多。 数据集有10个类别,所以网络输出维度为10。
初始化权重和偏置
torch.norma 生成一个均值为 0,标准差为0.01,一个形状为size=(num_inputs, num_outputs)的张量
偏置生成一个num_outputs =10 的一维张量,并用0初始化
W = torch.normal(0, 0.01, size=(num_inputs, num_outputs), requires_grad=True)###
b = torch.zeros(num_outputs, requires_grad=True)
requires_grad=True
,PyTorch 会在后向传播过程中自动计算该张量的梯度,这对于优化模型参数非常重要。
sum 运算符工作机制:
X = torch.tensor([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
X.sum(0, keepdim=True), X.sum(1, keepdim=True)
sum = 0 张量按列求和 sum = 1 张量按行求和
定义softmax函数
def softmax(X):
X_exp = torch.exp(X)
partition = X_exp.sum(1, keepdim=True)
return X_exp / partition # 这里应用了广播机制
测试
X = torch.normal(0, 1, (2, 5))
X_prob = softmax(X)
print(X_prob)
print(X_prob.sum(1))