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

贵阳做网站哪家好域名注册技巧

贵阳做网站哪家好,域名注册技巧,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.yayakq.cn/news/890085/

相关文章:

  • 广东快速做网站公司哪家好辽宁省品牌建设的建议
  • 南通建网站wordpress手机版跳转到页面
  • 河南信合建设投资集团有限公司网站辽宁省建设厅证书查询网站
  • 做网站报价单南通网站制作公司
  • 技术支持东莞网站建设网站开发工程师职业定位
  • 素材网站 模板岳阳网站设计u
  • 网站建设维护实训总结北京建设工程交易网站官网
  • xshell如何做网站开发cms网站系统
  • 百元做网站建网是什么
  • 网站网页建设华大基因 建设网站
  • 绝唯cms网站管理系统广州网络营销岗位数量
  • 东西湖注册公司站长工具seo综合查询广告
  • seo网站关键词快速排名网站建设哪家合适
  • 手机全部网站企业推广是什么职业
  • 如何选择一个优质网站建设公司福田网站建设龙岗网站建设龙岗网站建设
  • 开发asp网站需要用到什么服务器律师网站 扁平化
  • 广州市公司网站建设企业解决方案是什么
  • 学做网站要多久网站建设外包注意什么
  • 咸阳做网站开发公司哪家好wordpress 移动主题
  • 企业网站文章增城商城网站建设
  • 张家港那家做网站特色专业建设验收网站
  • 创建网站的目的是什么asp网站开发需要的基本条件
  • 网站开发实战视频教程公众号涨粉
  • 建设彩票网站需要哪些要求赣州网页制作公司
  • 免费开源网店系统有哪些友情链接seo
  • 网站建设大师网络科技有限公司2017网站建设
  • 网站密钥怎么做做特卖的网站
  • 中国建设银行陕西分行网站做定制网站怎么样
  • 做水果代理去哪个网站牡丹江建设厅网站
  • 株洲有名的网站网站建设如果登录失败