PyTorch是个啥玩意儿?

本文介绍了PyTorch中的卷积操作,如何使用enumerate()遍历数据,以及交叉熵损失函数的详细应用。特别地,讨论了交叉熵函数的输入要求和内部处理,同时解释了nvidia-smi命令中GPU的type标签含义,包括CUDA和OpenGL的区别。
摘要由CSDN通过智能技术生成

目录

1、pytorch卷积

 2、enumerate()函数,遍历数据

 3、交叉熵

4、nvidia-smi结果中的type标签什么意思?


1、pytorch卷积

 2、enumerate()函数,遍历数据

 3、交叉熵

 

交叉熵例子:

import torch
import torch.nn as nn
loss_fn = nn.CrossEntropyLoss()

x_input = torch.randn(5, 3)
# 上面的第一个参数5表示batchsize=5,第二个参数3表示分类的类别数,即有3类

x_target = torch.tensor([0, 2, 1, 1, 0])    
# 上面的标签是个数组,每个元素对应一个输入图片的类别,元素取值均在0~2之间(3种)
# 因为batchsize=5,所以这里数组中有5个图片标签,第一个标签0意思为第一张图片是第一类
# 第二个标签2意思第二张图片是第三类

# 这里给出两个对象所属的类别标签即可,此处的意思为第一个对象属于第0类,第二个我对象属于第2类
loss = loss_fn(x_input, x_target)
print('loss:\n', loss)

交叉熵函数接受的不能是one-hot标签,而是类似于「1  6  9  7  4」这样的数组,之后交叉熵函数会自动转化为one-hot标签类型。即将上面的数组变为

01000000000
00000010000
00000000001    这个数组就相当于
batchsize=5,因为数组中的每个元素均代表一个图片类别00000001000
00001000000

如果不同类别对应的权重不同,传入的权重参数应该是一个1维的tensor

输入的每一类的置信度得分(input)应该是原始的,未经过softmax或者normalized。原因是这个函数会首先对输入的原始得分进行softmax,所以必须保证输入的是每一类的原始得分。不能写成[0.2, 0.36, 0.44]这种softmax之后的或者[0, 1, 0]这种one-hot编码

输入的target也不能是one-hot标签,直接输入每个例子对应的类别编号就行了(0 < target_value < C-1),比如产生的结果数为N*C(N为个数,C为类别数),那么输入的target必须输入一个长度为N的一维tensor(指明每个结果属于哪一类,如[1, 3, 0],函数内部会自动转化为one-hot标签)

4、nvidia-smi结果中的type标签什么意思?

 They are both for GPU.

C = compute = CUDA or OpenCL //纯计算
G = graphics = DirectX or OpenGL //绘图

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值