上一篇:python中张量 PyTorch张量操作指南 python张量转换为矩阵目录一、torch.cat: 沿指定维度拼接张量功能描述示例代码二、torch.stack: 创建新维度堆叠张量功能描述示例代码三、torch.split: 按尺寸分割张量功能描述示例代码四、torch.chunk: 按数量均分张量功能描述示例代码综合示例:图像数据的分割与合并处理场景设定代码实现关键操作解析扩展应用建议拓展资料与对比在深度进修操作中,张量的维度变换是数据处理和模型构建的基础技能。无论是多模态数据的融合(如图像与文本),还是批处理数据的拆分重组,合理运用张量操作函数可显著优化计算流程。PyTorch提供的cat、stack、split和chunk正是解决此类难题的利器。下面内容将逐一解析其原理与应用。一、torch.cat: 沿指定维度拼接张量功能描述torch.cat(concatenate)沿已有的某一维度连接多个形状兼容的张量,生成更高维度的单一张量。要求除拼接维度外,其余维度的大致必须完全一致。示例代码import torcha = torch.tensor([[1, 2], [3, 4]]) 形状 (2, 2)b = torch.tensor([[5, 6], [7, 8]]) 在第0维拼接(垂直路线)c = torch.cat([a, b], dim=0) print(c) 输出: tensor([[1, 2], [3, 4], [5, 6], [7, 8]]) 在第1维拼接(水平路线)d = torch.cat([a, b], dim=1) print(d) 输出: tensor([[1, 2, 5, 6], [3, 4, 7, 8]])二、torch.stack: 创建新维度堆叠张量功能描述torch.stack会将输入张量沿新创建的维度进行堆叠,所有参与堆叠的张量必须具有完全相同的形状。输出张量的维度比原张量多一维。示例代码a = torch.tensor([1, 2, 3])b = torch.tensor([4, 5, 6]) 沿第0维堆叠,生成二维张量c = torch.stack([a, b], dim=0) print(c.shape) torch.Size([2, 3])print(c) 输出: tensor([[1, 2, 3], [4, 5, 6]]) 沿第1维堆叠,生成二维张量d = torch.stack([a, b], dim=1) print(d.shape) torch.Size([3, 2])print(d) 输出: tensor([[1, 4], [2, 5], [3, 6]])三、torch.split: 按尺寸分割张量功能描述torch.split根据指定的尺寸将输入张量分割为多个子张量。支持两种参数形式:整数列表:每个元素表示对应分片的长度整数N:等分为N个子张量(需总长度可被整除)示例代码a = torch.arange(9) tensor([0, 1, 2, 3, 4, 5, 6, 7, 8]) 按列表尺寸分割 [2,3,4]parts = torch.split(a, [2, 3, 4], dim=0)for part in parts: print(part)”’输出:tensor([0, 1])tensor([2, 3, 4])tensor([5, 6, 7, 8])”’ 平均分割为3份chunks = torch.split(a, 3, dim=0)print([c.shape for c in chunks]) [torch.Size([3]), torch.Size([3]), torch.Size([3])]四、torch.chunk: 按数量均分张量功能描述torch.chunk将输入张量沿指定维度均匀划分为N份。若无法整除,剩余元素分配到前面的分片中。示例代码a = torch.arange(10) tensor([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 分成3份,默认在第0维操作chunks = torch.chunk(a, chunks=3, dim=0)for i, chunk in enumerate(chunks): print(f”Chunk i}: chunk}”)”’输出:Chunk 0: tensor([0, 1, 2, 3])Chunk 1: tensor([4, 5, 6])Chunk 2: tensor([7, 8, 9])”’ 在第1维分割二维张量b = a.reshape(2,5)chunks = torch.chunk(b, chunks=2, dim=1)print(chunks[0].shape) torch.Size([2, 2])print(chunks[1].shape) torch.Size([2, 3])综合示例:图像数据的分割与合并处理下面内容是结合图像数据的完整操作示例,模拟图像预处理流程中的张量操作场景:场景设定假设我们有一批RGB图像数据(尺寸为3×256×256),需要完成下面内容操作:将图像拆分为RGB三个通道对每个通道进行独立归一化合并处理后的通道将多张图像堆叠成批次分割批次为训练/验证集代码实现import torchfrom torchvision import transformsfrom PIL import Imageimport matplotlib.pyplot as plt 1. 加载示例图像 (H, W, C) -> 转换为 (C, H, W)image = Image.open(‘cat.jpg’).convert(‘RGB’)image = transforms.ToTensor()(image) shape: torch.Size([3, 256, 256]) 2. 使用split分离RGB通道r_channel, g_channel, b_channel = torch.split(image, split_size_or_sections=1, dim=0)”’ 可视化原始通道plt.figure(figsize=(12,4))plt.subplot(131), plt.imshow(r_channel.squeeze().numpy(), cmap=’Reds’), plt.title(‘Red’)plt.subplot(132), plt.imshow(g_channel.squeeze().numpy(), cmap=’Greens’), plt.title(‘Green’)plt.subplot(133), plt.imshow(b_channel.squeeze().numpy(), cmap=’Blues’), plt.title(‘Blue’)plt.show()”’ 3. 对每个通道进行归一化(示例操作)def normalize(tensor): return (tensor – tensor.mean()) / tensor.std()r_norm = normalize(r_channel)g_norm = normalize(g_channel)b_norm = normalize(b_channel) 4. 使用cat合并处理后的通道normalized_img = torch.cat([r_norm, g_norm, b_norm], dim=0)”’观察归一化效果plt.imshow(normalized_img.permute(1,2,0))plt.title(‘Normalized Image’)plt.show()”’ 5. 创建模拟图像批次 (假设有4张相同图像)batch_images = torch.stack([image]*4, dim=0) shape: (4, 3, 256, 256) 6. 使用chunk分割批次为训练集/验证集train_set, val_set = torch.chunk(batch_images, chunks=2, dim=0)print(f”Train set size: train_set.shape}”) torch.Size([2, 3, 256, 256])print(f”Val set size: val_set.shape}”) torch.Size([2, 3, 256, 256])关键操作解析步骤函数影响维度变化通道分离torch.split提取单独颜色通道(3,256,256)→3个(1,256,256)数据合并torch.cat合并处理后的通道数据3个(1,256,256)→(3,256,256)批次构建torch.stack将单张图像复制为4张图像的批次(3,256,256)→(4,3,256,256)批次划分torch.chunk将批次按比例划分为训练/验证集(4,3,256,256)→2×(2,3,256,256)扩展应用建议数据增强:对split后的通道进行不同变换(如仅对R通道做对比度调整)模型输入:stack后的批次可直接输入CNN网络分布式训练:利用chunk将数据分布到多个GPU处理特征可视化:通过split提取中间层特征图的单个通道进行分析通过这个完整的图像处理流程示例,可以清晰看到:split+cat组合常用于特征处理管道stack+chunk组合是构建批处理体系的关键工具这些操作在保持计算效率的同时提供了灵活的数据控制能力拓展资料与对比函数核心影响维度变化输入要求torch.cat沿现有维度拼接不变各张量形状需匹配torch.stack新建维度堆叠+1维所有张量形状完全相同torch.split按尺寸分割不变需指定分割尺寸或份数torch.chunk按数量均分不变总长度需可分配应用建议:当需要合并同类数据且保留原始维度时用cat;若需扩展维度以表示批次或通道时用stack;对序列数据分段处理优先考虑split;均匀划分特征图或张量时选择chunk。掌握这些工具后,无论兄弟们将能更灵活地操控张量维度,适应复杂模型的构建需求!到此这篇关于PyTorch张量操作指南(cat、stack、split与chunk)的文章就介绍到这了,更多相关PyTorch张量操作内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 无论兄弟们可能感兴趣的文章:Pytorch数据类型Tensor张量操作的实现支持PyTorch的einops张量操作神器用法示例详解PyTorch中改变张量形状的几种技巧Pytorch:torch.diag()创建对角线张量方式PyTorch张量拼接、切分、索引的实现
下一篇:中央空调值得装吗 中央空调怎么样 装中央空调好处文章目录[隐藏]关于Home Central 空调谐装修时为什么选择中央空色调?为什么中央空喊了好几年还容易后悔?为什么装修家的时候会放弃中央空调而选择壁挂机?说说那些关于装修的事,分享各种关于装修的经验和聪明。大家好,我说的是装修,可以多了解一下装修!空 Tune是个很实用的电器,冬夏都要用。尤其是夏天,人肯定离不开它!家用空调音,有中央空调音、风管机、柜机、壁挂机等多种形式。很多一开始装了中央空调的家庭,用了几年后就后悔了,因此会建议身边的朋友用壁挂空调。为什么?这一期,如果你家准备装修或者已经开始装修了,而且还特别讲究空调,那么你就要认真读一读,由于内容很有参考价格,可以让你更加了解空调的选择。关于Home Central 空调谐开头来说要知道,家用中央空音其实是多在线的,商场、酒店用的中央空音只一个统称,因此家用中央空音只一个统称!户式中央空音也叫风冷热泵中央空音。它以室外空空气为“热源”,机械做功输出热量,解决中央空音的冷热水供应,调节室内空空气温度。同时,中央空调在家庭中使用,常以“一为三、一为四、一为五等”的形式呈现。因此,我们先来看看Home Central 空 Tune的代表品牌:目前家庭中央空调可以分为日系、国产、美系三类。日系目前在国内所销售的皆为合资品牌,因此也被称为合资品牌,这些合资品牌代表有三菱重工、三菱电机、大金、东芝、日立、松下&8230;&8230;..国产品牌中央空调代表有格力、美的、海信&8230;&8230;..美系品牌中央空调代表有特灵、约克、开利、麦克维尔&8230;&8230;.品牌不同,中央空价格也不一样,同时质量也有很大差别。所有品牌都声称有专利,会有很好的舒适度。装修时为什么选择中央空色调?作为当前高质量空音色的代表,很多人喜欢中央空音色,也有开发者喜欢,甚至将其设计为“标配”。可以说中央空音有一个非常突出的优势,让很多人有消费的冲动:开头来说是高颜值:中央空色调隐藏在吊顶里,外面只能看到出风口和回风道,因此在美学上更整洁美观,可以提升家的颜值。二是舒适性好:由于中央空送风口在棚顶,送风是自上而下,风量柔安宁缓,因此会有很好的舒适性,这也是很多人选择它的重要缘故其中一个。第三是高质量:只要选择了中央空调,基本上就说明此刻的装修是高质量的,会进步装修水平,让家更有质量。第四,不占用空房间:由于中央空音藏在天花板里,因此不会占用墙壁和地面之间的空房间,可以节省家里的空房间。为什么中央空喊了好几年还容易后悔?对于中央空调的调动,会有一个很独特的情况,就是你当初选择用中央空调有多坚定,你后来对自己的决定有多后悔。这是由于,用了中央空调之后,大众对它的不足做了一个诚实的划重点,并且分享出来,一起讨论。最终大家一致认为中央空调并不适合所有家庭,实用性较差。一、维护太麻烦:很多人的中央空调节在调试时都会出现难题。这时,他们不得不破坏新装修的天花板,重新安装管道。后期使用还是有很多难题,造成渗水,对装修破坏性太大。最重要的是它藏在天花板里,维护起来超级麻烦。一旦中央空调出现渗水,基本上就要拆天花板了,想想就让人头疼。二是对使用的影响:对于中枢空转移,由于“一拖N”的设计,一旦外机出难题,家里也不会有难题,对使用的影响显而易见。这不像分空音。这个坏了,你可以用其他的。至少家里还有空音。三、使用成本高:大家都知道中央空价格贵,然而这里我想说,后期使用成本也很高。本来普通空调整每个月两三百元就够了,而中央空调整基本都要三五百元,差别非常明显。四是让空房间显得压抑:对于中央空外呼来说,由于是隐藏在吊顶内,因此要做一个30cm的吊顶,这样会让原本就不是很高的新房在装修完成后显得更加压抑。五、保养的麻烦:中央空音需要定期保养,这里最明显的表现就是清洁。对于中央空转移,需要专业人员来做清理,这一个成本。另外,每次清洁,由于内部机器的设计,只能实现简单的清洁,无法实现深度清洁。因此里面很容易堆积细菌和灰尘,对人体会有一定的影响。为什么装修家的时候会放弃中央空调而选择壁挂机?由于第一次听不懂,听别人说选了中央空调,然而用了之后也知道不适合自己。因此在二次装修时,我们会拓展资料别人的经验,拒绝使用中央空调,改用挂壁机。而且如果身边的亲戚朋友问他中央空调好用吗,我相信给出的答案是不用。而是他们建议用普通空音,这是很实在的回答。其实答案很好领会,由于常见的空音更适合家庭使用,它有下面内容优点:一、价格实惠:普通空转接,往往是壁挂机和机柜的组合。即使是经济型家庭,也只用壁挂机。一台壁挂机,国产品牌2000元。小编认为一个三居室的家庭,购买空 tune的价格在1万元左右。但作为一套三居室,如果要用中央空调,就要26000-45000元之间。两者的区别太明显了。二、省心:壁挂式空调音器一个外接单元和一个内接单元的组合,独立运行,互不干扰。即使一个坏了也不会影响其他空音的使用,使用起来超级省心。然而,中央空音不行。只要外单元坏了,内单元就不能用了,用起来麻烦。第三,维护方便:壁挂空调的日常维护可以说是超级简单,除了清洁基本没有难题。至于清洁,你可以在家里自己做,由于太简单了,不用请师傅做保养。在这方面,中央空调节不起影响。保养和维修都会产生费用,而且超级麻烦。第四,舒适度还不错:虽然中央空调的出风口效果很好,然而壁挂机还不错,可以满足所有人对空调的使用要求。也就是说,能接受中央的,就一定能接受壁挂空调。毕竟壁挂空调在国内一直在用。最终说说装修,给大家拓展资料一下:对于居家居住来说,不建议使用,除非你只是认可中央空音或者家里只配了一个空额外的平面座椅,由于考虑到实际使用情况,还是选择壁挂式空音比较好,也比较适合普通家庭。以上内容由谈装修原创,图片来自网络,侵权删除。感谢无论兄弟们的阅读!