pytorch的 Size[3] 和 Size[3,1] 区别

今天参考d2l-zh-pytorch做循环神经网络中第一个练习时,没有导入d2l库(之前遇到到跟本地numpy冲突),部分需要d2l库的部分采用手搓,发现损失总是不收敛,跟预期极大。经过不断排查,发现是reshape((-1,1))这个写错了,我写成reshape((-1))了。没想到不报错,模型还能训练(

在张量中,维度是用来表示数据结构的多维性。标量(scalar)是一个具有单一值的张量。

python 复制代码
import torch
x = torch.tensor(4)

print(f"x值(tensor类型): {x}\n",
      f"x的数值(数字): {x.item()}\n",
      f"x的维度: {x.shape}")
# x值(tensor类型): 4
#  x的数值(数字): 4       
#  x的维度: torch.Size([])

这里的x就是为标量,它没有维度,所以是[]

标量没有维度!!!

python 复制代码
import torch
x = torch.tensor([1,2,3])

print(f"x值(tensor类型): {x}\n",
      f"x的维度: {x.shape}\n",

      f"x[0]的值(tensor类型): {x[0]}\n",
      f"x[0]的数值(数字): {x[0].item()}\n",
      f"x[0]的维度: {x[0].shape}")
# x值(tensor类型): tensor([1, 2, 3])
#  x的维度: torch.Size([3])
#  x[0]的值(tensor类型): 1
#  x[0]的数值(数字): 1
#  x[0]的维度: torch.Size([])

这个上面的x是一维张量(向量),单个x元素是标量,没有维度。

python 复制代码
import torch
x = torch.tensor([1,2,3])
x = x.reshape((-1,1))
print(f"x的维度: {x.shape}\n",
      f"x[0]的维度: {x[0].shape}\n"
      f"x[0]的数值: {x[0].item()}")
# x的维度: torch.Size([3, 1])
#  x[0]的维度: torch.Size([1])
# x[0]的数值: 1

这个上面的x是二维张量(向量),单个x元素是一维张量,维度为1。

因为之前主要写C++,所以当pytorch输出Size[3]时觉得是(1,3)这样维度为2的。这是由于我没有考虑到张量和标量的区别。

相关推荐
B站_计算机毕业设计之家2 分钟前
豆瓣电影数据采集分析推荐系统 | Python Vue Flask框架 LSTM Echarts多技术融合开发 毕业设计源码 计算机
vue.js·python·机器学习·flask·echarts·lstm·推荐算法
weixin_446260857 分钟前
掌握 Claude Code Hooks:让 AI 变得更聪明!
人工智能
小白|9 分钟前
CANN性能调优实战:从Profiling到极致优化的完整方案
人工智能
哈__9 分钟前
CANN加速图神经网络GNN推理:消息传递与聚合优化
人工智能·深度学习·神经网络
渣渣苏9 分钟前
Langchain实战快速入门
人工智能·python·langchain
七月稻草人11 分钟前
CANN 生态下 ops-nn:AIGC 模型的神经网络计算基石
人工智能·神经网络·aigc·cann
User_芊芊君子11 分钟前
CANN_MetaDef图定义框架全解析为AI模型构建灵活高效的计算图表示
人工智能·深度学习·神经网络
I'mChloe12 分钟前
CANN GE 深度技术剖析:图优化管线、Stream 调度与离线模型生成机制
人工智能
凯子坚持 c13 分钟前
CANN 生态全景:`cann-toolkit` —— 一站式开发套件如何提升 AI 工程效率
人工智能
lili-felicity15 分钟前
CANN流水线并行推理与资源调度优化
开发语言·人工智能