网站建设报价明细单,硬盘做免费嗳暧视频网站,泉州网页建站模板,wordpress开发用什么软件个人主页#xff1a;Icomi 在深度学习蓬勃发展的当下#xff0c;PyTorch 是不可或缺的工具。它作为强大的深度学习框架#xff0c;为构建和训练神经网络提供了高效且灵活的平台。神经网络作为人工智能的核心技术#xff0c;能够处理复杂的数据模式。通过 PyTorch#xff0… 个人主页Icomi 在深度学习蓬勃发展的当下PyTorch 是不可或缺的工具。它作为强大的深度学习框架为构建和训练神经网络提供了高效且灵活的平台。神经网络作为人工智能的核心技术能够处理复杂的数据模式。通过 PyTorch我们可以轻松搭建各类神经网络模型实现从基础到高级的人工智能应用。接下来就让我们一同走进 PyTorch 的世界探索神经网络与人工智能的奥秘。本系列为PyTorch入门文章若各位大佬想持续跟进欢迎与我交流互关。 前面我们学习了张量和 numpy 数组的相互转换这是我们在深度学习数据处理中非常实用的技能。 今天咱们要讲讲张量的拼接操作这可是在神经网络搭建过程中极为常用的方法就好比搭建一座宏伟建筑时不可或缺的连接工艺。想象一下我们构建神经网络就像搭建一座复杂的大厦张量就是构成大厦的各种预制构件而拼接操作就像是把这些构件精准连接在一起的关键技术。 比如说在后面将要学习到的残差网络里张量的拼接起到了至关重要的作用。残差网络能够有效解决深度神经网络训练过程中的梯度消失和梯度爆炸问题让网络可以更深层次地学习数据特征。这里面通过巧妙地拼接不同层的张量就像是把不同功能的建筑模块合理组合从而构建出了强大的深层网络结构。 还有注意力机制这也是深度学习领域的一个重要概念。在注意力机制中张量的拼接帮助我们对不同的信息进行整合与聚焦就像在纷繁复杂的信息海洋中通过拼接操作找到最关键的信息片段并组合起来让模型能够更加 “聪明” 地处理数据。 所以掌握张量的拼接操作对于我们理解和构建先进的神经网络模型至关重要。接下来咱们就深入学习一下张量的拼接到底是怎么实现的以及在不同场景下该如何灵活运用它。
1. torch.cat 函数的使用¶
torch.cat 函数可以将两个张量根据指定的维度拼接起来.
import torchdef tensor_concatenation():# 创建第一个三维随机整数张量tensor_1 torch.randint(0, 10, [3, 5, 4])# 创建第二个三维随机整数张量tensor_2 torch.randint(0, 10, [3, 5, 4])print(tensor_1)print(tensor_2)print(- * 50)# 1. 按 0 维度拼接concatenated_tensor_dim0 torch.cat([tensor_1, tensor_2], dim0)print(concatenated_tensor_dim0.shape)print(- * 50)# 2. 按 1 维度拼接concatenated_tensor_dim1 torch.cat([tensor_1, tensor_2], dim1)print(concatenated_tensor_dim1.shape)print(- * 50)# 3. 按 2 维度拼接concatenated_tensor_dim2 torch.cat([tensor_1, tensor_2], dim2)print(concatenated_tensor_dim2)if __name__ __main__:tensor_concatenation()
程序输出结果:
tensor([[[6, 8, 3, 5],[1, 1, 3, 8],[9, 0, 4, 4],[1, 4, 7, 0],[5, 1, 4, 8]],[[0, 1, 4, 4],[4, 1, 8, 7],[5, 2, 6, 6],[2, 6, 1, 6],[0, 7, 8, 9]],[[0, 6, 8, 8],[5, 4, 5, 8],[3, 5, 5, 9],[3, 5, 2, 4],[3, 8, 1, 1]]])
tensor([[[4, 6, 8, 1],[0, 1, 8, 2],[4, 9, 9, 8],[5, 1, 5, 9],[9, 4, 3, 0]],[[7, 6, 3, 3],[4, 3, 3, 2],[2, 1, 1, 1],[3, 0, 8, 2],[8, 6, 6, 5]],[[0, 7, 2, 4],[4, 3, 8, 3],[4, 2, 1, 9],[4, 2, 8, 9],[3, 7, 0, 8]]])
--------------------------------------------------
torch.Size([6, 5, 4])
--------------------------------------------------
torch.Size([3, 10, 4])
tensor([[[6, 8, 3, 5, 4, 6, 8, 1],[1, 1, 3, 8, 0, 1, 8, 2],[9, 0, 4, 4, 4, 9, 9, 8],[1, 4, 7, 0, 5, 1, 5, 9],[5, 1, 4, 8, 9, 4, 3, 0]],[[0, 1, 4, 4, 7, 6, 3, 3],[4, 1, 8, 7, 4, 3, 3, 2],[5, 2, 6, 6, 2, 1, 1, 1],[2, 6, 1, 6, 3, 0, 8, 2],[0, 7, 8, 9, 8, 6, 6, 5]],[[0, 6, 8, 8, 0, 7, 2, 4],[5, 4, 5, 8, 4, 3, 8, 3],[3, 5, 5, 9, 4, 2, 1, 9],[3, 5, 2, 4, 4, 2, 8, 9],[3, 8, 1, 1, 3, 7, 0, 8]]])
2. torch.stack 函数的使用¶
torch.stack 函数可以将两个张量根据指定的维度叠加起来.
import torchdef test():data1 torch.randint(0, 10, [2, 3])data2 torch.randint(0, 10, [2, 3])print(data1)print(data2)new_data torch.stack([data1, data2], dim0)print(new_data.shape)new_data torch.stack([data1, data2], dim1)print(new_data.shape)new_data torch.stack([data1, data2], dim2)print(new_data)if __name__ __main__:test()
3. 总结¶
张量的拼接操作也是在后面我们经常使用一种操作。cat 函数可以将张量按照指定的维度拼接起来stack 函数可以将张量按照指定的维度叠加起来。