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的。这是由于我没有考虑到张量和标量的区别。

相关推荐
七牛开发者3 小时前
从 GLM 到 GPT,HarnessPro 如何用 RSI 降低 Agent 成本
人工智能·gpt·agent·harness·rsi
跨境卫士-小汪3 小时前
TikTokShop欧洲商品接口架构调整跨境技术团队需要做好哪些准备
大数据·人工智能·新媒体运营·跨境电商·跨境·营销策略
飞Link4 小时前
什么是 AirSim?一文读懂无人机仿真平台
python·算法·无人机
康小汪4 小时前
AI 写 Vue 总写成同一个味道:给它装 Skills,装的不是知识是边界
前端·vue.js·人工智能·ai编程·最佳实践
收放扳机4 小时前
多机连线(In-Line)场景下,收放板机“缓存工位”的容量与架构选型参考
人工智能·科技·自动化·制造·pcb工艺
曲径海盗5 小时前
【Python 学习第 38 天】for 循环
python·学习笔记·编程入门
武天旭5 小时前
AI安全--AI大模型的后门攻击检测与防御
人工智能·深度学习·安全·机器学习
智能运维指南5 小时前
研制过程“两张皮“怎么破:研制一体化支撑平台的定位、能力边界与落地前提
java·前端·人工智能·嘉为蓝鲸
人工智能AI技术5 小时前
DeepInfer开源炸场!别再妄想个人电脑跑满血DeepSeek
人工智能
深蓝电商API5 小时前
用AI生成拟人行为:让鼠标轨迹更“有人味”
人工智能·爬虫