《动手学深度学习》softmax回归的从零开始实现

本文详细介绍了如何从零开始实现softmax回归,包括初始化模型参数、定义softmax操作、定义模型、定义损失函数、计算分类精度、训练模型以及进行预测。通过实例代码展示了每个步骤,并提供了训练过程的可视化。最后,文章还提供了预测函数,用于对测试数据进行预测。整个过程展示了深度学习模型训练的基本流程。
摘要由CSDN通过智能技术生成

3.6. softmax回归的从零开始实现(动手学深度学习)
代码学习笔记

import torch
from IPython import display
from d2l import torch as d2l

batch_size = 256
train_iter,test_iter = d2l.load_data_fashion_mnist(batch_size)

3.6.1 初始化模型参数

num_inputs = 784
num_outputs = 10

W = torch.normal(0, 0.01, size=(num_inputs, num_outputs), requires_grad=True)
b = torch.zeros(num_outputs, requires_grad=True)

3.6.2 定义softmax操作

X=torch.tensor([[1.0,2.0,3.0],[4.0,5.0,6.0]])
#分别以维度0和1求和,6=【1,2,3】相加 15=【4,5,6】自己相加
X.sum(0,keepdim=True),X.sum(1,keepdim=True)
def softmax(X):
  X_exp = torch.exp(X)
  partition = X_exp.sum(1,keepdim=True)
  #广播机制,每一项除以总和,求概率,每行概率和为1
  return X_exp / partition
X = torch.normal(0,1,(2,5))
X_prob = softmax(X)
X_prob,X_prob.sum(1)

3.6.3 定义模型

def net(X):
  return softmax(torch.matmul(X.reshape((-1,W.shape[0])),W)+b)

3.6.4 定义损失函数

y = torch.tensor([0,2])
y_hat = torch.tensor([[0.1,0.3,0.6],[0.3,0.2,0.5]])
#[0,1]对应y[0]->0.y[1]->2;
#从中选取y_hat[0,0]->0.1,y_hat[1,2]->0.5
y_hat[[0,1],y]
def cross_entropy(y_hat,y):
  #y_hat=torch.tensor([[0.1,0.3,0.6],[0.3,0.2,0.5]])得出len(y_hat)=2
  #-torch.log(y_hat[0][0])、-torch.log(y_hat[1][2])
  return -torch.log(y_hat[range(len(y_hat))
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值