当前位置: 首页 > news >正文

泸州网站建设唐网互联wanwang

泸州网站建设唐网互联,wanwang,wordpress 图片展示 插件,网站设计公司张量 在 PyTorch 中,张量(Tensor)是核心数据结构,类似于 NumPy 中的数组,但具有更强的计算能力和对 GPU 的支持。 创建 从列表或数组创建 import torch# 从列表创建 tensor_from_list torch.tensor([1, 2, 3, 4])…

张量

在 PyTorch 中,张量(Tensor)是核心数据结构,类似于 NumPy 中的数组,但具有更强的计算能力和对 GPU 的支持。

创建

从列表或数组创建
import torch# 从列表创建
tensor_from_list = torch.tensor([1, 2, 3, 4])
print(tensor_from_list)# 从 NumPy 数组创建
import numpy as np
numpy_array = np.array([1, 2, 3, 4])
tensor_from_numpy = torch.from_numpy(numpy_array)
print(tensor_from_numpy)
随机初始化
# 创建一个形状为 (2, 3) 的随机张量
random_tensor = torch.rand(2, 3)
print(random_tensor)# 创建一个形状为 (2, 3) 的标准正态分布随机张量
normal_tensor = torch.randn(2, 3)
print(normal_tensor)# 创建一个形状为 (2, 3) 的全零张量
zero_tensor = torch.zeros(2, 3)
print(zero_tensor)# 创建一个形状为 (2, 3) 的全一张量
one_tensor = torch.ones(2, 3)
print(one_tensor)
从其他张量创建
# 创建一个与现有张量相同形状和数据类型的张量
tensor_a = torch.tensor([[1, 2], [3, 4]])
tensor_b = torch.zeros_like(tensor_a)
print(tensor_b)# 创建一个与现有张量相同形状但不同数据类型的张量
tensor_c = torch.ones_like(tensor_a, dtype=torch.float)
print(tensor_c)

基本运算

基本操作
# 加法
tensor1 = torch.tensor([1, 2, 3])
tensor2 = torch.tensor([4, 5, 6])
result = tensor1 + tensor2
print(result)# 减法
result = tensor1 - tensor2
print(result)# 乘法
result = tensor1 * tensor2
print(result)# 除法
result = tensor1 / tensor2
print(result)
矩阵操作
# 矩阵乘法
matrix1 = torch.tensor([[1, 2], [3, 4]])
matrix2 = torch.tensor([[5, 6], [7, 8]])
result = torch.matmul(matrix1, matrix2)
print(result)# 点积
vector1 = torch.tensor([1, 2, 3])
vector2 = torch.tensor([4, 5, 6])
result = torch.dot(vector1, vector2)
print(result)
形状操作
# 改变形状
tensor = torch.tensor([[1, 2, 3], [4, 5, 6]])
reshaped_tensor = tensor.view(3, 2)
print(reshaped_tensor)# 展平
flattened_tensor = tensor.flatten()
print(flattened_tensor)# 增加维度
expanded_tensor = tensor.unsqueeze(0)
print(expanded_tensor)# 删除维度
squeezed_tensor = expanded_tensor.squeeze(0)
print(squeezed_tensor)

特殊之处

从上面给出的一些简单例子可以看出,张量的创建和一些基本操作方法都和ndarray数组类似,但其也有一些特殊的属性和方法。这些属性和方法都是针对于GPU支持和加速张量计算进行的优化

# 查看数据类型
print(tensor.dtype)  # 输出 torch.int64# 查看设备
print(tensor.device)  # 输出 cpu# 显示其梯度信息,方便于计算神经网络的前向传播
print(tensor.grad)
# 把张量迁移到GPU上,利用gpu的并行计算加速计算
if torch.cuda.is_available():device = torch.device("cuda")tensor_gpu = my_tensor.to(device)print("-" * 30)print(tensor_gpu)print(tensor_gpu.device)
else:print("CUDA is not available")

上面输出的设备为device='cuda:0' 表示使用第一个可用的 CUDA 设备(通常是显卡)。如果你有多个 GPU,可以通过改变设备编号来选择不同的 GPU。

我们还可以用三元运算符优化一下设备选择代码

torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

图像格式转换

在进行计算机视觉任务的时候,有时候需要将pytorch和其余的机器视觉库同时使用,通常是利用opencv等工具先进行图像处理,然后将结果转化成tensor类型传递给pytorch,在pytorch执行之后,也可以将tensor类型的数据转换为numpy等类型用于matplotlib进行可视化展示,此处介绍一下tensor类型和Image类型以及Numpy数组类型的相互转化

我们先使用一张示例图

使用opencv读取的图片类型为numpy格式,在虚拟环境中安装opencv的命令为:

pip install opencv-python

接下来读取示例图片并实现其类型的转换

# tensor 和 numpy数组的相互转换
import cv2# opencv读取示例图片
im_cv = cv2.imread('test.jpg')
print("-" * 30)
print(type(im_cv))  # 输出<class 'numpy.ndarray'>
# 因为opencv读取进来的图像按照BGR顺序存储,我们先将其改成RGB模式
im_cv = cv2.cvtColor(im_cv, cv2.COLOR_BGR2RGB)
# 利用torchvision中的transformer模块中的ToTensor类将numpy数组转换成tensor类型
import torchvision
my_totensor = torchvision.transforms.ToTensor()
im_tensor = my_totensor(im_cv)
print(type(im_tensor))  # 输出<class 'torch.Tensor'>
# 为了使用matplotlib,将tensor转换成为numpy数组
import matplotlib.pyplot as plt
im_numpy = im_tensor.numpy()
# 调整维度顺序
im_numpy = np.transpose(im_numpy, (1, 2, 0))
plt.imshow(im_numpy)
plt.axis('off')  # 关闭坐标轴
plt.show()

在计算机视觉中,除了opencv读取的numpy格式之外,使用PIL读取的Image类型也十分常用,其也可以和tensor类型进行转换

# tensor 和 Image数组的相互转换
from PIL import Image
im_pil = Image.open('test.jpg')
print("-" * 30)
print("PIL读取的图片类型为:",type(im_pil))  # 输出<class 'PIL.JpegImagePlugin.JpegImageFile'>
import torchvision
my_totensor = torchvision.transforms.ToTensor()
im_tensor = my_totensor(im_pil)
print(type(im_tensor))  # 输出<class 'torch.Tensor'>
# 将tensor转换成Image并可视化
my_toPIL = torchvision.transforms.ToPILImage()
im_pil = my_toPIL(im_tensor)
Image._show(im_pil)
http://www.yayakq.cn/news/92188/

相关文章:

  • 深圳哪里有可以做网站跳转的公司如何自己做淘宝网站
  • 中医医院网站建设需求电商网站有哪些官网
  • 泉州手机网站开发上海专业的网站
  • 企业网站建站 优帮云网站建设费用详细表
  • 我的世界做弊端网站品牌vi设计手册案例欣赏
  • ip库网站源码网站开发会计处理
  • 南京有哪些做网站的公司淘宝建设网站的意义
  • 兰州最好的网站开发公司广告设计和平面设计有什么区别
  • 建网站怎么年赚建设 互动 网站 模式
  • 南京自适应网站做网站怎么推广
  • 龙游建设局网站天猫旗舰店网站建设案例
  • 网站网站设计中小企业发展
  • 个人微博网站设计微商的自己做网站叫什么
  • 刷单网站建设做网站开发工资怎样
  • 用vis做的简单网站邯郸做wap网站找谁
  • 成都制作手机网站工程公司管理软件
  • 给人做网站网站创业给别人做网站怎么样
  • asp网站服务建设论文网站建设有哪些优质公众号
  • 做网站和微信公众号如何招生台州外发加工网
  • 潍坊手机模板建站网站建设格局
  • 延吉 网站开发站长工具国色天香
  • 做网站销售那里找客户做手机软件需要学什么
  • 虚拟主机可建站1个是不是只能放一个网站免费的全平台内容系统
  • 网站服务商排名做淘宝需要知道什么网站吗
  • 贵州住建设局官方网站专业做网站的公司有没有服务器
  • 网站app怎么做的wordpress增加必选项
  • 网站建设推广机构门店营销活动策划方案
  • 2015百度推广网站遭到攻击网页源代码解析
  • 网站服务器要求小型网站开发 论文
  • 做推文的网站行业门户网站运营方案