【跟着李沐学pytorch】softmax分类

分类输出为多输出

step1:对类别进行编码

 

 比较真实值的概率与预测值的概率计算损失。

 fashion_minist数据训练:

数据读取模块:

import numpy as np
import torch
import torchvision
from torch.utils import data
from torchvision import transforms
from d2l import torch as d2l

d2l.use_svg_display()
#通过ToTensor实例将图像数据从PIL变换成32为浮点数格式
#并除去255使得所有像素的数值在0到1之间
trans=transforms.ToTensor()
#dataset下载数据
mnist_train=torchvision.datasets.FashionMNIST(root="../data",train=True,#下载的训练数据集,train=True表示拿到的数据为Tensor而不是图片
                                             transform=trans,
                                             download=True)
mnist_test=torchvision.datasets.FashionMNIST(root="../data",train=False,#测试数据集用于验证模型的好坏
                                             transform=trans,
                                             download=True)

print(len(mnist_train),len(mnist_test))#train的大小为60000,test大小为10000
print(mnist_train[0][0].shape)#第一张图片的大小 tensor.Size([1,28,28])为黑白图片,因此通道数为1,大小28*28

def get_fashion_mnist_labels(labels):
    text_labels=[
        't-shirt','trouser','pullover','dress','coat','sandal','shirt',
        'sneaker','bag','ankle boot'
    ]
    return [text_labels[int(i)] for i in labels]

def show_images(imgs,num_rows,num_cols,titles=None,scale=1.5):
    """" Plot a list of images"""
    figsize=(num_cols*scale,num_rows*scale)
    _,axes=d2l.plt.subplots(num_rows,num_cols,figsize=figsize)
    axes=axes.flatten()
    for i,(ax,img) in enumerate(zip(axes,imgs)):
        if torch.is_tensor(img):
            #图片张量
            ax.imshow(img.numpy())
            ax.axes.get_xaxis().set_visible(False)#横坐标不展示
            ax.axes.get_yaxis().set_visible(False)#纵坐标不显示
        else:#PIL图片
            ax.imshow(img)
        if titles:
            ax.set_title(titles[i])#显示标题
    return axes


X,y=next(iter(data.DataLoader(mnist_train,batch_size=18)))
show_images(X.reshape(18,28,28),2,9,titles=get_fashion_mnist_labels(y))
d2l.plt.show()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值