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

相关推荐
人工智能训练9 小时前
【极速部署】Ubuntu24.04+CUDA13.0 玩转 VLLM 0.15.0:预编译 Wheel 包 GPU 版安装全攻略
运维·前端·人工智能·python·ai编程·cuda·vllm
yaoming1689 小时前
python性能优化方案研究
python·性能优化
源于花海9 小时前
迁移学习相关的期刊和会议
人工智能·机器学习·迁移学习·期刊会议
码云数智-大飞10 小时前
使用 Python 高效提取 PDF 中的表格数据并导出为 TXT 或 Excel
python
DisonTangor11 小时前
DeepSeek-OCR 2: 视觉因果流
人工智能·开源·aigc·ocr·deepseek
薛定谔的猫198211 小时前
二十一、基于 Hugging Face Transformers 实现中文情感分析情感分析
人工智能·自然语言处理·大模型 训练 调优
发哥来了11 小时前
《AI视频生成技术原理剖析及金管道·图生视频的应用实践》
人工智能
biuyyyxxx11 小时前
Python自动化办公学习笔记(一) 工具安装&教程
笔记·python·学习·自动化
数智联AI团队11 小时前
AI搜索引领开源大模型新浪潮,技术创新重塑信息检索未来格局
人工智能·开源
极客数模12 小时前
【2026美赛赛题初步翻译F题】2026_ICM_Problem_F
大数据·c语言·python·数学建模·matlab