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

网站建设目的和功能定位学大教育培训机构电话

网站建设目的和功能定位,学大教育培训机构电话,wordpress用户角色管理,网站导航设计图片PyTorch Tensor 形状变化操作详解 在深度学习中,Tensor 的形状变换是非常常见的操作。PyTorch 提供了丰富的 API 来帮助我们调整 Tensor 的形状,以满足模型输入、计算或数据处理的需求。本文将详细介绍 PyTorch 中常见的 Tensor 形状变换操作&#xff0…

PyTorch Tensor 形状变化操作详解

在深度学习中,Tensor 的形状变换是非常常见的操作。PyTorch 提供了丰富的 API 来帮助我们调整 Tensor 的形状,以满足模型输入、计算或数据处理的需求。本文将详细介绍 PyTorch 中常见的 Tensor 形状变换操作,并通过示例代码进行说明。


1. 基础形状操作

1.1 viewreshape

  • 功能:改变 Tensor 的形状而不改变其数据。
  • 区别
    • view 要求新形状的总元素数与原形状一致,否则会报错。
    • reshape 更灵活,如果无法直接改变形状,会尝试创建一个新的 Tensor。
  • 示例
tensor = torch.randn(2, 3, 4)  # 原形状为 (2, 3, 4)
reshaped_tensor = tensor.view(2, 12)  # 改变形状为 (2, 12)
print(reshaped_tensor.shape)  # 输出: torch.Size([2, 12])

1.2 squeezeunsqueeze

  • 功能
    • squeeze:移除大小为 1 的维度。
    • unsqueeze:在指定位置插入大小为 1 的维度。
  • 示例
tensor = torch.randn(1, 3, 1, 4)  # 原形状为 (1, 3, 1, 4)
squeezed_tensor = tensor.squeeze()  # 移除所有大小为 1 的维度
print(squeezed_tensor.shape)  # 输出: torch.Size([3, 4])unsqueezed_tensor = squeezed_tensor.unsqueeze(0)  # 在第 0 维插入大小为 1 的维度
print(unsqueezed_tensor.shape)  # 输出: torch.Size([1, 3, 4])

2. 高级形状操作

2.1 permute

  • 功能:重新排列 Tensor 的维度顺序。
  • 示例
tensor = torch.randn(2, 3, 4)  # 原形状为 (2, 3, 4)
permuted_tensor = tensor.permute(2, 0, 1)  # 调整为 (4, 2, 3)
print(permuted_tensor.shape)  # 输出: torch.Size([4, 2, 3])

2.2 transpose

  • 功能:交换指定的两个维度。
  • 示例
tensor = torch.randn(3, 4)  # 原形状为 (3, 4)
transposed_tensor = tensor.transpose(0, 1)  # 交换第 0 和第 1 维度
print(transposed_tensor.shape)  # 输出: torch.Size([4, 3])

2.3 flatten

  • 功能:将指定范围内的维度展平为一维。
  • 示例
tensor = torch.randn(2, 3, 4)  # 原形状为 (2, 3, 4)
flattened_tensor = tensor.flatten(start_dim=1)  # 展平从第 1 维开始
print(flattened_tensor.shape)  # 输出: torch.Size([2, 12])

2.4 repeat

  • 功能:沿指定维度重复 Tensor。
  • 示例
tensor = torch.tensor([[1, 2], [3, 4]])  # 原形状为 (2, 2)
repeated_tensor = tensor.repeat(2, 3)  # 在第 0 维重复 2 次,在第 1 维重复 3 次
print(repeated_tensor.shape)  # 输出: torch.Size([4, 6])

2.5 expand

  • 功能:在不复制数据的情况下扩展 Tensor 的形状(仅适用于大小为 1 的维度)。
  • 示例
tensor = torch.tensor([[1], [2], [3]])  # 原形状为 (3, 1)
expanded_tensor = tensor.expand(3, 4)  # 扩展为 (3, 4)
print(expanded_tensor)
# 输出:
# tensor([[1, 1, 1, 1],
#         [2, 2, 2, 2],
#         [3, 3, 3, 3]])

3. 数据提取与分散

3.1 narrow

  • 功能:按指定维度和范围提取部分 Tensor。
  • 示例
tensor = torch.arange(10)  # 原形状为 (10,)
narrowed_tensor = tensor.narrow(0, 2, 4)  # 从第 0 维索引 2 开始提取长度为 4 的部分
print(narrowed_tensor)  # 输出: tensor([2, 3, 4, 5])

3.2 gather

  • 功能:根据索引从指定维度收集元素。
  • 示例
tensor = torch.tensor([[1, 2], [3, 4]])  # 原形状为 (2, 2)
indices = torch.tensor([[0, 1], [1, 0]])  # 索引矩阵
gathered_tensor = torch.gather(tensor, 1, indices)  # 按列索引收集
print(gathered_tensor)
# 输出:
# tensor([[1, 2],
#         [4, 3]])

3.3 scatter

  • 功能:根据索引将值分散到目标 Tensor 中。
  • 示例
tensor = torch.zeros(2, 3)  # 目标 Tensor,初始为零
indices = torch.tensor([[0, 1, 2], [2, 0, 1]])  # 索引矩阵
values = torch.tensor([[5, 6, 7], [8, 9, 10]])  # 值矩阵
scattered_tensor = tensor.scatter(1, indices, values)  # 按列分散赋值
print(scattered_tensor)
# 输出:
# tensor([[5., 6., 7.],
#         [0., 9., 8.]])

4. 对角操作

4.1 diag

  • 功能:提取对角线元素或将一维 Tensor 转换为对角矩阵。
  • 示例
tensor = torch.tensor([1, 2, 3])  # 一维 Tensor
diag_tensor = torch.diag(tensor)  # 创建对角矩阵
print(diag_tensor)
# 输出:
# tensor([[1, 0, 0],
#         [0, 2, 0],
#         [0, 0, 3]])

http://www.dtcms.com/wzjs/81470.html

相关文章:

  • 莱芜百度网站制作seo搜索优化排名
  • 河北明迈特的网站在哪里做的seoul是什么国家
  • 深圳自适应网站推广价格全国疫情高峰感染高峰
  • 临朐网站制作最低价格郑州粒米seo顾问
  • 电子商务网站的规划与建设论文百度文库网页版
  • 巨腾外贸网站建设公司优化设计方法
  • 自己做网站需要服务器吗网络销售
  • 找人做网站一套多少钱网络营销的六大特征
  • 商丘做网站多少钱上海外贸网站seo
  • 商水县建设局网站最新新闻消息
  • 电脑外设网站建设论文网络营销效果评估
  • 苏州网站制作价格网站优化排名提升
  • 电商网站建设技术可行性分析厦门谷歌seo公司有哪些
  • 做查询网站费用seo管理平台
  • 深圳网站建设高端链接转二维码
  • 南通做网站公司seo网站优化培训怎么做
  • dede网站转移武汉百度推广公司
  • 老河口网站定制指数平台
  • 做淘宝网站用什么软件做企业网络营销系统分析报告
  • 找代理做网站网站域名归属谁最新注册域名查询
  • 成都网站改版推广赚钱的项目
  • 手机qq怎么用wordpress网站优化推广怎么做
  • 怎么做贷款网站sem是什么?
  • 无锡网站建设 微信公众号高端网站建设哪个好
  • 做简历的网站viso西地那非片
  • 陈仓网站建设网上推销产品的软件
  • 网站备案信息核验单怎么长春seo快速排名
  • 基于html的网站设计百度热门排行榜
  • 通付盾 公司网站建设怎么宣传自己新开的店铺
  • 做淘宝图的素材搜索网站网站建设方案范文