首页 > 其他分享 >【已解决 含代码调试分析】pytorch的维度,为什么计算loss是0维度的,0维度是是什么?作用是什么?

【已解决 含代码调试分析】pytorch的维度,为什么计算loss是0维度的,0维度是是什么?作用是什么?

时间:2024-09-21 20:49:26浏览次数:3  
标签:loss tensor dim torch print pytorch 维度 Size

嘿,你能搜索到这个问题,说明你说一个认真学习的同学,这个问题的细节值得思考。

欢迎收藏,会持续更新。请仔细看后面的调试界面。

三维维度很好理解,就是只管的认为是 长 宽 高,你能看出下面的计算结果吗?

import torch

dim_3 = torch.randn(1,2,3)
dim_2 = torch.randn(1,2)
dim_1 = torch.randn(1)
dim_0 = torch.randn(0)



print(dim_3.size())
print(dim_2.size())
print(dim_1.size())
print(dim_0.size())


print(dim_3)
print(dim_2)
print(dim_1)
print(dim_0)

运行结果,特别主要黄色部分

torch.Size([1, 2, 3])
torch.Size([1, 2])
torch.Size([1])
torch.Size([0])

tensor([[[-0.1314, 0.1718, -1.0469],
[-1.2821, 0.4009, -0.6350]]])

tensor([[0.9778, 1.2986]])

tensor([0.8059])

tensor([])

我们先来分析下

之前有同学跟我讨论,说不存在torch.randn(0)的情况,通过上面的运行,得出是存在0维度的,

那么上面显示0维度是tensor([]),是不是说0维度是空呢?

我可以肯定的说,0维度不是空,0维度代表一个数值,0维度在我们计算loss的时候需要用到。

因为loss只有是一个具体的0维度数值,那么神经网络才能知道应该从整体上优化,

那么如果loss是1维度,或者2维度,会怎么样?一个可能是沿着某个维度对神经网络深度学习进行梯度下降优化,但是能不能形成整体的优化结果呢?估计这个有点难,也会导致优化不够全面均衡,所以,在计算loss的时候,我们需要0维度,如果你算出的loss不是0维度,那么就需要转换为0维度,才能实现整体的优化,尔不是沿着某个维度优化,导致整个深度学习网络发生偏差。

下面我们再看一个例子

import torch

dim_1 = torch.tensor([1])
dim_0 = torch.tensor(0)




print(dim_1.size())
print(dim_0.size())


print(dim_1)
print(dim_0)



if __name__ == '__main__':
    print("r如果你学到东西了,记得点资收藏,分享不易")

输出:

torch.Size([1])
torch.Size([])
tensor([1])
tensor(0)

编辑

编辑

这两个tensor的变量,ndim是不同的,ndim就是维度。

0维度的shape是torch.Size([]),输出的结果是没有****中括号的,****这点务必记住,这样在调试bug的时候,能够避雷。

欢迎关注收藏,会持续更新,如果你遇到什么疑问,也可以评论和留言,大家共同进步。

标签:loss,tensor,dim,torch,print,pytorch,维度,Size
From: https://blog.csdn.net/2301_76776887/article/details/142392952

相关文章

  • fastsam_pytorch图像分割算法模型
    FastSAM论文FastSegmentAnything模型结构以yolov8-seg的instancesegmentation为基础,检测时集成instancesegmentation分支,主要分为两步全实例分割(allinstanceSegmentation)和基于prompt的mask输出(Prompt-guidedSelection),仅使用了2%的SA-1B数据集便得到了差不多的......
  • 《深度学习》—— PyTorch的介绍及PyTorch的CPU版本安装
    文章目录一、PyTorch的简单介绍二、pytorch的CPU版本安装三、torch、torchvision、torchaudio三个库的介绍一、PyTorch的简单介绍PyTorch是一个由FacebookAI实验室开发的深度学习框架,它基于Python,并提供了高效的GPU加速和灵活的模型定义能力。1.PyTorch的基本特点......
  • GoogleNet模型原理及Pytorch实现
    GoogleNet模型,也被称为Inception-v1,是由Google团队在2014年提出的一种深度卷积神经网络架构,专门用于图像分类和特征提取任务。该模型在ILSVRC(ImageNetLargeScaleVisualRecognitionChallenge)比赛中取得了优异成绩,其创新的核心在于引入了“Inception”模块。以下是对Goog......
  • ResNet模型原理及Pytorch实现
    ResNet(ResidualNetwork,残差网络)模型是由微软亚洲研究院的何凯明等人在2015年提出的一种深度神经网络结构。其核心原理在于通过残差连接(residualconnections)解决了深层网络训练中的梯度消失和梯度爆炸问题,使得网络可以训练得更深,性能更强。以下是ResNet模型原理的详细解析:......
  • 每天五分钟深度学习框架pytorch:pytorch中已经定义好的损失函数
    本文重点前面我们学习了pytorch中两种模式的损失函数,一种是nn,另外一种是functional,本文将讲解pytorch中已经封装好的损失函数。其实nn的方式就是类,而functional的方式就是方法。nn中使用的也是functional。损失函数中的参数无论是nn还是functional,大多数的损失函数都有size......
  • 【终极对决】Ping32 vs 绿盾:十大维度深度剖析,谁是企业数据安全的守护神?
    在信息安全领域,企业对数据保护的需求不断升级。Ping32与绿盾加密作为两款备受关注的数据保护软件,各具特色。本文将从十大维度深度剖析这两款软件,帮助企业选择最适合自己的数据安全解决方案。1.加密算法Ping32Ping32采用了多种高级加密算法(如AES-256),提供强大的数据保护,确保......
  • 【大模型专栏—入门篇】一文打通你的Pytorch安装
    大模型专栏介绍......
  • PyTorch:快速了解Tensor的连续性
    目录1、引言2、底层数据的存储3、按行优先一维展开1、引言Tensor的连续性是指其底层一维数组元素的存储顺序与按行优先一维展开的元素顺序是否一致。2、底层数据的存储  Tensor的底层数据在内存上是连续存储的,通过代码说明如下:用到的python函数与方法x.data_ptr......
  • BayesianLSTM PawaritL 使用PyTorch中的贝叶斯LSTM进行能源消耗预测,贝叶斯神经网络仅
    https://colab.research.google.com/github/PawaritL/BayesianLSTM/blob/master/Energy_Consumption_Predictions_with_Bayesian_LSTMs_in_PyTorch.ipynb#EnergyConsumptionPredictionswithBayesianLSTMsinPyTorchAuthor:PawaritLaosunthara内容:请点击上面的在Col......
  • python 深度神经网络训练,pytorch ,tensorflow paddle大模型训练中损失突然增大的原因
    在机器学习和深度学习的训练过程中,损失函数的数值突然变高可能是由多种因素引起的。以下是一些可能的原因和相应的解决方案:1.**学习率设置不当**:如果学习率过高,可能会导致模型在优化过程中跳过最小值,甚至导致模型发散。相反,如果学习率过低,则可能导致模型训练速度过慢,甚至停滞......