pytorch 变对角矩阵_[PyTorch 学习笔记] 1.2 Tensor(张量)介绍

本章代码:

  • https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson1/tensor_introduce1.py
  • https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson1/tensor_introduce1.py

Tensor 的概念

Tensor 中文为张量。张量的意思是一个多维数组,它是标量、向量、矩阵的高维扩展。

标量可以称为 0 维张量,向量可以称为 1 维张量,矩阵可以称为 2 维张量,RGB 图像可以表示 3 维张量。你可以把张量看作多维数组。

e48a476bbc6ccf60724ebb6751c10db2.png

Tensor 与 Variable

在 PyTorch 0.4.0 之前,torch.autograd 包中存在 Variable 这种数据类型,主要是用于封装 Tensor,进行自动求导。Variable 主要包含下面几种属性。

  • data: 被包装的 Tensor。
  • grad: data 的梯度。
  • grad_fn: 创建 Tensor 所使用的 Function,是自动求导的关键,因为根据所记录的函数才能计算出导数。
  • requires_grad: 指示是否需要梯度,并不是所有的张量都需要计算梯度。
  • is_leaf: 指示是否叶子节点(张量),叶子节点的概念在计算图中会用到,后面详细介绍。

67945b28c7267096fdd88cf90978b073.png

在 PyTorch 0.4.0 之后,Variable 并入了 Tensor。在之后版本的 Tensor 中,除了具有上面 Variable 的 5 个属性,还有另外 3 个属性。

  • dtype: 张量的数据类型,如 torch.FloatTensor,torch.cuda.FloatTensor。
  • shape: 张量的形状。如 (64, 3, 224, 224)
  • device: 张量所在设备 (CPU/GPU),GPU 是加速计算的关键

3b0c4c535d88a26fd827e482d1e63aba.png

关于 dtype,PyTorch 提供了 9 种数据类型,共分为 3 大类:float (16-bit, 32-bit, 64-bit)、integer (unsigned-8-bit ,8-bit, 16-bit, 32-bit, 64-bit)、Boolean。模型参数和数据用的最多的类型是 float-32-bit。label 常用的类型是 integer-64-bit。

1fbe3a34a3c870938ab12dd0520623bf.png

Tensor 创建的方法

直接创建 Tensor

torch.tensor()

torch.tensor(data, dtype=None, device=None, requires_grad=Fal
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`from pytorch_msssim import MS_SSIM`这行代码是在导入一个名为`pytorch_msssim`的Python库,并且从该库中导入`MS_SSIM`类或函数。 `pytorch_msssim`是一个基于PyTorch的库,提供了计算多尺度结构相似性(MS-SSIM)指标的功能。MS-SSIM是一种衡量图像质量的指标,它考虑了图像在多个尺度上的结构相似性。 通过使用`MS_SSIM`类或函数,你可以计算两张图像之间的MS-SSIM值。下面是一个示例程序,演示了如何使用`pytorch_msssim`库来计算MS-SSIM值: ```python import cv2 import torch from pytorch_msssim import MS_SSIM # 读取两张图像 image1 = cv2.imread('image1.jpg') image2 = cv2.imread('image2.jpg') # 将图像转换为PyTorch张量 tensor1 = torch.from_numpy(image1).float().unsqueeze(0).permute(0, 3, 1, 2) tensor2 = torch.from_numpy(image2).float().unsqueeze(0).permute(0, 3, 1, 2) # 创建MS_SSIM对象 ms_ssim = MS_SSIM(data_range=255, size_average=True, channel=3) # 计算MS-SSIM值 ms_ssim_value = ms_ssim(tensor1, tensor2) # 打印结果 print("MS-SSIM value:", ms_ssim_value.item()) ``` 在这个示例程序中,我们首先使用`cv2.imread()`函数读取两张图像,并将它们存储在`image1`和`image2`量中。然后,我们将这些图像转换为PyTorch张量,通过使用`torch.from_numpy()`函数将NumPy数组转换为张量,并使用`unsqueeze()`和`permute()`函数调整张量的维度顺序。 接下来,我们创建了一个`MS_SSIM`对象,其中指定了数据范围(data_range)、是否对各尺度的SSIM值进行平均(size_average)以及通道数(channel)等参数。 最后,我们使用`ms_ssim()`函数计算两张图像之间的MS-SSIM值,并通过`.item()`方法获取其数值。 请注意,使用`pytorch_msssim`库需要先安装PyTorch库。你可以使用以下命令来安装它们: ``` pip install torch pip install pytorch-msssim ``` 希望这个示例程序能帮助你计算两张图像之间的MS-SSIM值!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值