【PYG】 PyTorch中size方法和属性

在 PyTorch 中,size 方法和属性用于获取张量的维度信息。下面是它们的用法和区别:

  1. node_features.size

    • 这是一个属性(attribute ),返回一个 torch.Size 对象,表示张量的维度。这是不可调用的,因此不能直接用于获取特定维度的大小。

    • 示例:

      python 复制代码
      size_attr = node_features.size
      print(size_attr)  # 输出: torch.Size([3, 4])
  2. node_features.size()

    • 这是一个方法(method),返回一个 torch.Size 对象,本质上是一个包含张量维度的元组(tuple)。这个方法是可调用的,返回的结果与 size 属性相同。

    • 示例:

      python 复制代码
      size_method = node_features.size()
      print(size_method)  # 输出: torch.Size([3, 4])
  3. node_features.size(1)

    • 这是一个方法调用,它接受一个整数参数(维度索引)并返回该维度的大小。这个方法用于直接获取特定维度的大小。

    • This is a method call that takes an integer argument (the dimension index) and returns the size of that specific dimension. This is useful for obtaining the size of a particular dimension directly.

    • 示例:

      python 复制代码
      size_dim1 = node_features.size(1)
      print(size_dim1)  # 输出: 4

总结

  • node_features.size :属性,返回维度信息作为 torch.Size 对象。Attribute that returns the dimensions as a torch.Size object.
  • node_features.size() :方法,返回维度信息作为 torch.Size 对象(与属性相同)。
  • node_features.size(dimension):方法,返回指定维度的大小。 Method that returns the size of the specified dimension.

示例使用

下面是一个完整的示例来展示用法:

python 复制代码
import torch

node_features = torch.tensor([[1.0, 2.0, 3.0, 4.0],
                              [2.0, 3.0, 4.0, 5.0],
                              [3.0, 4.0, 5.0, 6.0]])

# 使用 size 属性
size_attr = node_features.size
print(f"使用 size 属性: {size_attr}")  # 输出: 使用 size 属性: torch.Size([3, 4])

# 使用 size 方法(无参数)
size_method = node_features.size()
print(f"使用 size 方法: {size_method}")  # 输出: 使用 size 方法: torch.Size([3, 4])

# 使用 size 方法(带维度参数)
size_dim1 = node_features.size(1)
print(f"维度 1 的大小: {size_dim1}")  # 输出: 维度 1 的大小: 4

为什么能输入 1

node_features.size(1) 中,参数 1 表示你想获取张量的第 1 个维度(从 0 开始计数)。对于这个特定的张量 node_features,它的形状是 [3, 4],其中:

  • 0 维度的大小是 3(行数)
  • 1 维度的大小是 4(列数)

因此,node_features.size(1) 返回 4,因为第 1 个维度有 4 个元素。

复制代码
使用 size 属性: <built-in method size of Tensor object at 0x7f0254cef400>
使用 size 方法: torch.Size([3, 4])
维度 1 的大小: 4
  • 打印type(size_attr)得到<class 'builtin_function_or_method'>
  • 打印type(size_method)得到<class 'torch.Size'>
  • 如果调用不存在的维度会报错
    size_dim1 = node_features.size(2)
    IndexError: Dimension out of range (expected to be in range of [-2, 1], but got 2)
相关推荐
空白到白10 分钟前
NLP相关面试题
人工智能·自然语言处理
嵌入式-老费13 分钟前
Easyx图形库应用(和opencv协同)
人工智能·opencv·计算机视觉
放羊郎16 分钟前
基于三维点云图的路径规划
人工智能·动态规划·slam·点云·路径规划·激光slam
算家计算17 分钟前
英伟达亮出最强AI芯片!性能暴增3倍,算力竞赛迎来新节点
人工智能·nvidia·芯片
AndrewHZ25 分钟前
【图像处理基石】图像滤镜的算法原理:从基础到进阶的技术解析
图像处理·python·opencv·算法·计算机视觉·滤镜·cv
lxmyzzs27 分钟前
【图像算法 - 30】基于深度学习的PCB板缺陷检测系统: YOLOv11 + UI界面 + 数据集实现
人工智能·深度学习·算法·yolo·缺陷检测
Patrick_Wilson33 分钟前
AI 时代下的工程师核心竞争力思考
人工智能·ai编程·求职
AI优秘企业大脑40 分钟前
更新维护:定期更新、功能修复、性能优化的全面指南
大数据·人工智能
阿里云大数据AI技术44 分钟前
云栖实录 | AI原生搜索引擎:Elasticsearch 换“芯”——AI原生搜索内核增强技术
人工智能·搜索引擎
Dev7z1 小时前
基于Swin Transformer的皮肤病变分类与诊断系统
人工智能·深度学习·transformer