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

怎么用网站做地标网站推广优化公司

怎么用网站做地标,网站推广优化公司,网站设计与制作平台,苏州营销网站建设公司排名文章目录 1、张量基本运算2、阿达玛积3、点积运算4、指定运算设备⭐5、解决在GPU运行PyTorch的问题 🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发、数据结构和算法&am…

文章目录

  • 1、张量基本运算
  • 2、阿达玛积
  • 3、点积运算
  • 4、指定运算设备⭐
  • 5、解决在GPU运行PyTorch的问题

🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发、数据结构和算法,初步涉猎人工智能和前端开发。
🦅个人主页:@逐梦苍穹
📕所属专栏:人工智能
🌻gitee地址:xzl的人工智能代码仓库
✈ 您的一键三连,是我创作的最大动力🌹

1、张量基本运算

PyTorch 计算的数据都是以张量形式存在
可以在 CPU 中运算, 也可以在 GPU 中运算.
基本运算中,包括 add、sub、mul、div、neg 等函数,
以及这些函数的带下划线的版本 add_、sub_、mul_、div_、neg_,
其中带下划线的版本为修改原数据。

操作类型函数示例代码代码解释
创建张量torch.randintdata = torch.randint(0, 10, [2, 3])生成一个2x3的随机整数张量,范围在0到9之间。
不修改原数据addnew_data = data.add(10)将每个元素加上10,生成一个新张量。
修改原数据add_data.add_(10)将每个元素加上10,直接修改原数据。
减法subdata.sub(100)将每个元素减去100,生成一个新张量。
乘法muldata.mul(100)将每个元素乘以100,生成一个新张量。
除法divdata.div(100)将每个元素除以100,生成一个新张量。
取反negdata.neg()将每个元素取反,生成一个新张量。

代码:

# -*- coding: utf-8 -*-
# @Author: CSDN@逐梦苍穹
# @Time: 2024/7/16 1:25# 导入PyTorch库
import torch# 定义测试函数
def test():# 生成一个2x3的随机整数张量,范围在0到9之间data = torch.randint(0, 10, [2, 3])print(data)print('-' * 50)# 1. 不修改原数据# 使用add函数将每个元素加上10,生成一个新张量new_data = data.add(10)  # 等价 new_data = data + 10print(new_data)print('-' * 50)# 2. 直接修改原数据# 注意: 带下划线的函数为修改原数据本身# 使用add_函数将每个元素加上10,直接修改原数据data.add_(10)  # 等价 data += 10print(data)# 3. 其他函数# 使用sub函数将每个元素减去100,生成一个新张量print(data.sub(100))# 使用mul函数将每个元素乘以100,生成一个新张量print(data.mul(100))# 使用div函数将每个元素除以100,生成一个新张量print(data.div(100))# 使用neg函数将每个元素取反,生成一个新张量print(data.neg())

效果:
image.png

2、阿达玛积

阿达玛积(Hadamard Product),又称为元素积(element-wise product),是指两个相同尺寸的矩阵对应元素相乘得到的新矩阵。

阿达玛积与矩阵乘法不同,矩阵乘法是行与列的点积,而阿达玛积只是简单的元素相乘。

# -*- coding: utf-8 -*-
# @Author: CSDN@逐梦苍穹
# @Time: 2024/7/16 2:25
import torchdef test():data1 = torch.tensor([[1, 2], [3, 4]])data2 = torch.tensor([[5, 6], [7, 8]])# 第一种方式data = torch.mul(data1, data2)print(data)print('-' * 50)# 第二种方式data = data1 * data2print(data)print('-' * 50)if __name__ == '__main__':test()

image.png

3、点积运算

点积(Dot Product)是向量计算中的一种基本运算,它将两个向量对应元素相乘并求和。
点积在机器学习和深度学习中广泛应用于各种计算,如向量相似性、神经网络中的加权和计算等。

image.png
点积运算要求第一个矩阵 shape: (n, m),
第二个矩阵 shape: (m, p),
两个矩阵点积运算 shape 为: (n, p)。

  1. 运算符 @ 用于进行两个矩阵的点乘运算
  2. torch.mm 用于进行两个矩阵点乘运算, 要求输入的矩阵为2维
  3. torch.bmm 用于批量进行矩阵点乘运算, 要求输入的矩阵为3维
  4. torch.matmul 对进行点乘运算的两矩阵形状没有限定.
    1. 对于输入都是二维的张量相当于 mm 运算.
    2. 对于输入都是三维的张量相当于 bmm 运算
    3. 对数输入的 shape 不同的张量, 对应的最后几个维度必须符合矩阵运算规则

三维矩阵:
image.png

torch.randn(3, 4, 5)参数个数不限,从左到右依次是维度。

# -*- coding: utf-8 -*-
# @Author: CSDN@逐梦苍穹
# @Time: 2024/7/16 2:35
import torch# 1. 点积运算
def test01():# 创建两个张量,data1 为 3x2 矩阵,data2 为 2x2 矩阵data1 = torch.tensor([[1, 2], [3, 4], [5, 6]])data2 = torch.tensor([[5, 6], [7, 8]])# 第一种方式:使用 @ 运算符进行矩阵乘法(点积运算)data = data1 @ data2print(data)print('-' * 50)# 第二种方式:使用 torch.mm 函数进行矩阵乘法data = torch.mm(data1, data2)print(data)print('-' * 50)# 第三种方式:使用 torch.matmul 函数进行矩阵乘法data = torch.matmul(data1, data2)print(data)print('-' * 50)# 2. torch.mm 和 torch.matmul 的区别
def test02():# matmul 可以处理不同维度的张量# 第一个张量的形状为 (3, 4, 5)# 第二个张量的形状为 (5, 4)# torch.mm 只能处理二维矩阵的乘法,而 matmul 可以处理高维度张量的乘法print(torch.randn(3, 4, 5))print(torch.matmul(torch.randn(3, 4, 5), torch.randn(5, 4)).shape)# 反转张量的顺序,第二个张量的形状为 (3, 4, 5)# 第一个张量的形状为 (5, 4)# 结果形状仍然符合矩阵乘法规则print(torch.matmul(torch.randn(5, 4), torch.randn(3, 4, 5)).shape)# 3. torch.bmm 函数的用法
def test03():# 批量点积运算# 第一个维度为 batch_size# data1 的形状为 (3, 4, 5)# data2 的形状为 (3, 5, 8)# torch.bmm 可以处理批量的矩阵乘法data1 = torch.randn(3, 4, 5)data2 = torch.randn(3, 5, 8)# 进行批量矩阵乘法运算,结果形状为 (3, 4, 8)data = torch.bmm(data1, data2)print(data.shape)

image.png
image.png

4、指定运算设备⭐

PyTorch 默认会将张量创建在 CPU 控制的内存中, 即: 默认的运算设备为 CPU。
我们也可以将张量创建在 GPU 上, 能够利用对于矩阵计算的优势加快模型训练。
将张量移动到 GPU 上有两种方法:

  1. 使用 cuda 方法
  2. 直接在 GPU 上创建张量
  3. 使用 to 方法指定设备
指定设备的方式示例代码代码解释
使用 cuda 方法python data = torch.tensor([10, 20, 30]) data = data.cuda() 使用 cuda() 方法将张量从 CPU 移动到 GPU。
在创建张量时指定设备python data = torch.tensor([10, 20, 30], device='cuda:0') 在创建张量时,通过 device 参数直接指定设备为 GPU。
使用 to 方法python data = torch.tensor([10, 20, 30]) data = data.to('cuda:0') 使用 to() 方法将张量从 CPU 移动到 GPU。
使用 cpu 方法python data = data.cpu() 使用 cpu() 方法将张量从 GPU 移动到 CPU。
使用 torch.devicepython device = torch.device("cuda" if torch.cuda.is_available() else "cpu") tensor = torch.randn(3, 4, 5, device=device) 使用 torch.device 动态选择设备,并在创建张量时指定设备。
# -*- coding: utf-8 -*-
# @Author: CSDN@逐梦苍穹
# @Time: 2024/7/16 2:58
import torch
import torchvision# 1. 使用 cuda 方法
def test01():data = torch.tensor([10, 20, 30])print('存储设备:', data.device)# 如果安装的不是 gpu 版本的 PyTorch# 或电脑本身没有 NVIDIA 卡的计算环境# 下面代码可能会报错data = data.cuda()print('存储设备:', data.device)# 使用 cpu 函数将张量移动到 cpu 上data = data.cpu()print('存储设备:', data.device)# 输出结果:# 存储设备: cpu# 存储设备: cuda:0# 存储设备: cpu# 2. 直接将张量创建在 GPU 上
def test02():data = torch.tensor([10, 20, 30], device='cuda:0')print('存储设备:', data.device)# 使用 cpu 函数将张量移动到 cpu 上data = data.cpu()print('存储设备:', data.device)# 输出结果:# 存储设备: cuda:0# 存储设备: cpu# 3. 使用 to 方法
def test03():data = torch.tensor([10, 20, 30])print('存储设备:', data.device)data = data.to('cuda:0')print('存储设备:', data.device)# 输出结果:# 存储设备: cpu# 存储设备: cuda:0# 4. 存储在不同设备的张量不能运算
def test04():data1 = torch.tensor([10, 20, 30], device='cuda:0')data2 = torch.tensor([10, 20, 30])print(data1.device, data2.device)# RuntimeError: Expected all tensors to be on the same device,# but found at least two devices, cuda:0 and cpu!data = data1 + data2print(data)def test05():# 检查CUDA是否可用,并选择设备device = torch.device("cuda" if torch.cuda.is_available() else "cpu")# device = "cpu"print("Using device:", device)# 构建一个形状为 (3, 4, 5) 的随机张量,并指定设备tensor = torch.randn(3, 4, 5, device=device)print("Tensor:", tensor)print("Shape:", tensor.shape)print("Device:", tensor.device)data = torch.randn(5, 4, device=device)print(torch.matmul(tensor, data))def test06():print("PyTorch版本: ", torch.__version__)  # 打印PyTorch版本print("torchvision版本 ", torchvision.__version__)  # 打印torchvision版本print("CUDA是否可用: ", torch.cuda.is_available())  # 检查CUDA是否可用if __name__ == '__main__':test04()

5、解决在GPU运行PyTorch的问题

请参考我的这篇文章:https://xzl-tech.blog.csdn.net/article/details/140478985

http://www.hkea.cn/news/262702/

相关文章:

  • 福州做网站的公司多少钱信息流优化
  • 群晖的网站开发百度客服怎么转人工
  • 制作网站项目流程无锡网站建设seo
  • 最好的开发网站建设价格如何搜索网页关键词
  • 做网站犯法了 程序员有责任吗网站建设合同
  • 建设部职称网站关键词优化营销
  • 做seo还要需要做网站吗百度热搜榜排行
  • 福建城市建设厅网站怎么推广一个网站
  • 机构网站建设需要交费吗关键词挖掘
  • 专业网站建设费用报价今日最新消息
  • 电商网站建设论文2022黄页全国各行业
  • 能源企业 网站建设网络营销的应用
  • 如何看网站是用什么语言做的关键词排名是由什么决定的
  • 政府网站建设招标书百度网站收录
  • 已经有了网站怎么做推广哈尔滨关键词优化报价
  • 网站建设与管理作业镇江推广公司
  • 域名申请好后 如何建设网站网站权重划分
  • 佛山百度网站快速优化网络营销推广工具
  • 建一个网站需要哪些人广州seo网站推广公司
  • 建设银行etc官方网站搜索引擎优化的七个步骤
  • 做网站需要花钱吗海南百度推广运营中心
  • 做的网站显示图片很慢百度运营公司
  • 青州哪里做网站公司推广渠道
  • 网站面包屑导航怎么做的网推接单平台有哪些
  • 宜昌网站建设兼职百度关键词排名软件
  • 如何让百度快照找到自己的网站营销策划方案ppt模板
  • php网站超市广告软文是什么意思
  • b2c跨境电商宣城网站seo
  • 网站建设一流公司免费网站开发平台
  • 网站开发模式名词外贸谷歌优化