tensor view 使用与常见报错: shape ‘[4]‘ is invalid for input of size 6 +not compatible x.contiguous().view

BUG 修改:shape ‘[-1, 896]‘ is invalid for input of size 30720 shape '[-1, 896]' is invalid for input of size 30720 阅读详情

查看大小

Tensor.shape 
Tensor.size()  

AttributeError: ‘list’ object has no attribute ‘shape’

len(list)
或
np.array(a).shape 
或
print(list[0].shape)

view

if __name__ == '__main__':
    x = torch.tensor([[1, 2,3,4],
                      [5, 6,7,8],
                      [9, 10,11,12],
                      [13, 14,15,16],]).unsqueeze(dim=0).unsqueeze(dim=0)
	x = x.view(x.shape[0], x.shape[1]*4, int(x.shape[2]/2), int(x.shape[3]/2))
tensor([[[[ 1,  2,  3,  4],
          [ 5,  6,  7,  8],
          [ 9, 10, 11, 12],
          [13, 14, 15, 16]]]])
tensor([[[[ 1,  2],
          [ 3,  4]],

         [[ 5,  6],
          [ 7,  8]],

         [[ 9, 10],
          [11, 12]],

         [[13, 14],
          [15, 16]]]])

报错原因

tensor.view()方法可以调整tensor的形状,但必须保证调整前后元素总数一致 tensor.view()方法可以调整tensor的形状, \\ \color{red}但必须保证调整前后元素总数一致 tensor.view()方法可以调整tensor的形状,但必须保证调整前后元素总数一致
view不会修改自身的数据,返回的新tensor与原tensor共享内存,即更改一个,另一个也随之改变。view不会修改自身的数据,返回的新tensor与原tensor共享内存,即更改一个,另一个也随之改变。view不会修改自身的数据,返回的新tensor与原tensor共享内存,即更改一个,另一个也随之改变。

X.view(X.shape[2:])# 在y的前两个维度不是1的情况下,是会报错的

其他错误

RuntimeError: view size is not compatible with input tensor’s size and stride (at least one dimension spans across two contiguous subspaces). Use .reshape(…) instead.

tensor不是contiguous 引起的错误。查看targets.is_contiguous()为False。

两种解决办法:1)按照提示使用reshape代替;2)将变量先转为contiguous ,再进行view:

x.contiguous().view(b,-1)

view VS permute

在这里插入图片描述

import torch
x = torch.randn(2, 3)
y = torch.permute(x, (1, 0))
print(x)
print(y)

tensor([[ 1.0945, -0.0853, -0.3914],
        [-1.1281, -0.0633, -1.0864]])
tensor([[ 1.0945, -1.1281],
        [-0.0853, -0.0633],
        [-0.3914, -1.0864]])
torch.Size([3, 5, 2])
tensor([[[ 0.2059, -0.7165],
         [-1.1305,  0.5886],
         [-0.1247, -0.4969],
         [-0.5788,  0.0159],
         [ 1.4304,  0.6014]],

        [[ 2.4882, -0.3910],
         [-0.5558,  0.6903],
         [-0.4219, -0.5498],
         [-0.5346, -0.0703],
         [ 1.1497, -0.3252]],

        [[-0.5075,  0.5752],
         [ 1.3738, -0.3321],
         [-0.3317, -0.9209],
         [-1.6677, -1.1471],
         [-0.9269, -0.6493]]])
torch.Size([2, 3, 5])
tensor([[[ 0.2059, -1.1305, -0.1247, -0.5788,  1.4304],
         [ 2.4882, -0.5558, -0.4219, -0.5346,  1.1497],
         [-0.5075,  1.3738, -0.3317, -1.6677, -0.9269]],

        [[-0.7165,  0.5886, -0.4969,  0.0159,  0.6014],
         [-0.3910,  0.6903, -0.5498, -0.0703, -0.3252],
         [ 0.5752, -0.3321, -0.9209, -1.1471, -0.6493]]])
[官方链接](https://pytorch.org/docs/stable/generated/torch.permute.html)
[添加链接描述](https://www.geeksforgeeks.org/python-pytorch-permute-method/#:~:text=PyTorch%20torch.permute%20%28%29%20rearranges%20the%20original%20tensor%20according,as%20that%20of%20the%20original.%20Syntax:%20torch.permute%20%28*dims%29)
更多:
[python:pytorch维度变换,爱因斯坦求和约定enisum,einops](https://blog.youkuaiyun.com/ResumeProject/article/details/121354010)
RuntimeError: shape ‘[4]‘ is invalid for input of size 6 解决tensor的报错:RuntimeError: shape '[2]' is invalid for input of size 6 tensor维度问题 阅读详情

相关推荐

PyTorch张量变形:view、reshape与contiguous的内存布局原理与实战避坑

在深度学习与科学计算中,张量变形是数据处理的核心操作,它涉及内存布局与逻辑视图的映射关系。理解张量在内存中的物理存储(Storage)与逻辑形状(Size)、步长(Stride)的分离原理,是掌握高效数据操作的关键。张量的连续性(Contiguity)决定了能否在不复制数据的前提下安全重塑形状,这直接影响到计算性能与正确性。在PyTorch等框架中,view()操作要求输入张量连续,通过零拷贝创建新视图;而reshape()则更智能,自动处理非连续情况,必要时触发数据复制。掌握这些原理,能有效避免模型推理、

weixin_34059951的博客 406

shape [64, 256,256] is invalid for input of size。。。

shape [64, 256,256]] is invalid for input of size错误 我的模型在输入张量的时候,出现了shape [64, 256,256]] is invalid for input of size错误,这种错误,往往是跑pycharm在核实张量元素的时候,发现我们设置的张量维度和实际的数据不符合出现的,只需要在高维度处加-1即可。-1表示此处的维度随程序自动变化。可以很好的解决问题 ...

gray_robe的博客 4万+

PyTorch reshape操作详解:从张量形状原理到深度学习实战应用

在深度学习和张量计算中,张量作为多维数组是数据的基本载体,其形状定义了每个维度的元素数量,直接影响神经网络层的计算兼容性。理解张量形状的原理是掌握数据预处理和模型构建的基础,它决定了数据在不同计算模块间的流动方式。从技术价值看,形状操作是连接不同神经网络层的关键桥梁,特别是在全连接层与卷积层之间进行数据格式转换时不可或缺。在实际应用场景中,无论是为全连接层展平图像数据,还是为RNN调整序列维度,亦或是重组特征图进行注意力计算,都需要灵活的形状变换能力。本文聚焦PyTorch中的reshape操作,深入解析其

weixin_34043301的博客 345

bug解决:shape [-1, 400] is invalid for input of size 179776

# 首先是调用Variable、 torch.nn、torch.nn.functional from torch.autograd import Variable # 这一步还没有显式用到variable,但是现在写在这里也没问题,后面会用到 import torch.nn as nn import torch.nn.functional as F class Net(nn.Module): # 我们定义网络时一般是继承的torch.nn.Module创建新的子类

weixin_40945354的博客 2万+

PyTorch 2.3 张量基础:3个维度操作技巧与4种内存布局解析

本文深入解析PyTorch 2.3中张量的核心操作,包括3个维度操作技巧与4种内存布局。通过实战示例详细讲解view与reshape的区别、permute的高效转置以及expand与broadcasting机制,帮助开发者优化深度学习模型的性能与内存使用。特别探讨了Channels Last布局对卷积运算的显著性能提升,并提供了高级维度操作与内存优化技巧。

322

PyTorch reshape操作详解:从张量变形原理到深度学习实战应用

在深度学习与PyTorch框架中,张量(Tensor)作为核心数据结构,其形状变换是模型构建与数据处理的基础操作。理解张量变形的底层原理,关键在于掌握内存连续性与视图机制——这决定了操作是共享内存的视图变换还是产生数据拷贝。从技术价值看,高效的形状变换能优化内存使用、提升计算性能,是连接不同网络层数据接口的关键。在应用场景上,无论是卷积神经网络中全连接层前的特征图展平,还是自然语言处理中批次与序列维度的合并转换,都离不开reshape操作。本文聚焦torch.reshape函数,通过对比view、flatt

weixin_34345753的博客 427

【2023.03.23】修改代码错误整理

当然导致这个错误的原因其实很多,输入图像和网络需要的数据不一致啊之类的,因为我是直接用的人家论文作者的数据集和代码,只是加了一点自己的东西,所以搜索到的对我都没啥用,改了batchsize就完事,等我搞懂为啥以后再来编辑本文。经过查阅资料,该问题的原因主要是红框里的,我们需要将除-1以外的参数进行相乘(-1是程序推断出来的值),在我这里,如红框所示,我把input size=65536 除以20,再除以256,得到不是一个整数,这里我就知道我的。我采用了4,因为是16时后边又出错了,如下。

qq_45726976的博客 1350

张量可视化新范式:用冰箱仓储系统理解PyTorch高维张量

张量是深度学习中数据组织的核心抽象,其本质并非几何空间,而是面向计算与内存的多级分类协议。从标量到N维张量,关键在于理解每个维度所承载的工程语义——如batch维代表并行处理单元,channel维标识特征类别,H/W维提供空间定位能力。传统‘超立方体’类比违背人脑认知规律且掩盖维度功能差异,而‘生活仓储系统’(如冰箱分层、快递单号、乐高说明书)能自然映射索引路径、形状含义与内存连续性要求。该框架直指PyTorch/TensorFlow中shape mismatch、broadcasting陷阱、permut

weixin_30571465的博客 413

PyTorch中view()与reshape()的底层差异与工程实践指南

在深度学习与张量计算中,内存布局与数据连续性(Contiguity)是影响计算性能与正确性的核心概念。连续张量在内存中按行优先顺序线性存储,可实现高效的内存访问;而非连续张量则可能由转置(transpose)、维度交换等操作产生,其内存访问模式更为复杂。理解这一原理对于框架底层优化至关重要,它直接关系到计算图的构建与自动微分(Autograd)的行为。在PyTorch工程实践中,形状变换是高频操作,其中view()要求输入张量内存连续,执行零拷贝的视图变换,适用于性能关键路径;而reshape()则自动处理

weixin_33713350的博客 390

张量可视化本质:用快递站类比理解维度与索引

张量是深度学习中最基础也最易被误解的数据结构,其核心并非高维空间几何,而是多维索引寻址机制。从标量到六维张量,本质都是‘用N个整数下标唯一定位一个数值’——这正是索引自由度的工程定义。快递站模型将shape解构为‘楼号、单元、楼层、房号’等可执行的寻址指令,使维度脱离抽象空间幻觉,回归内存定位本质。该视角直接支撑PyTorch张量操作的底层逻辑:连续内存布局、广播对齐规则、transpose与permute的元数据差异、以及view/reshape的连续性约束。掌握这一思维,能系统规避RuntimeErro

wyjvip333的专栏 410

PyTorch reshape操作详解:从数据重塑原理到深度学习实战应用

在深度学习与张量计算中,数据重塑是一项基础且关键的操作,它允许在不改变数据元素的前提下重新组织张量的维度结构。其核心原理基于张量在内存中的线性存储顺序,通过改变索引方式来创建新的数据视图,从而实现高效的内存共享。这一技术对于模型架构中的数据流适配至关重要,能够显著提升计算效率并简化代码逻辑。在工程实践中,数据重塑广泛应用于连接全连接层前的特征展平、序列数据处理中的维度变换以及计算机视觉中的通道空间重组等场景。本文聚焦PyTorch中的reshape操作,深入解析其视图机制、-1参数的自动推导特性,并通过对比

weixin_34221775的博客 349

大模型推理引擎vLLM(21): vllm0.21.0中EP基类代码modular_kernel.py详细走读

大模型推理引擎vLLM(21): vllm0.21.0中EP基类代码modular_kernel.py详细走读

C/C++、嵌入式开发、深度学习算法、模型部署与推理优化 280

PyTorch手写注意力机制:从QKV计算到显存优化的全流程解析

注意力机制是Transformer架构的核心计算单元,本质是一种基于查询-键匹配度的动态加权聚合操作。其原理依赖点积相似度计算与缩放因子1/√dₖ的数值稳定性保障,技术价值在于实现长程依赖建模与并行化高效训练。典型应用场景包括BERT文本理解、LLaMA大语言模型推理及语音识别中的编码-解码对齐。工程落地中,QKV线性变换、mask注入时机、Softmax数值保护及多头reshape内存布局等细节,直接决定模型收敛性、显存占用与推理延迟——本文以PyTorch 2.0为基准,逐帧还原标准Scaled Dot

dgoh41514的博客 492

解决RuntimeError: shape ‘[64, 19200]‘ is invalid for input of size 1048576

意思是所希望x转换的形状与输入形状尺寸不符,x.size(0)=64,即批次的大小,64*64*300不等于1048576,,,所以可以先用1048576/64=128*128,所以想到把64*300改成128*128即可。

qq_41551022的博客 3094

Happy-LLM中文大模型实践教程:从手写Attention到RAG Agent落地

大模型技术正从理论研究加速走向工程落地,而中文场景下的实践门槛尤为突出——Tokenizer适配、LoRA微调显存控制、RAG中文语义检索、Agent指令遵循等关键环节,远非简单翻译英文教程可解。本文聚焦‘可执行的中文大模型工程能力’,深入解析基于PyTorch手写Multi-Head Attention的原理实现与维度调试逻辑,结合PEFT框架下LoRA在中文微调中的秩(r)与缩放因子(alpha)协同优化策略;进一步延伸至bge-m3嵌入+Faiss分层量化索引构建高相关性中文向量库,并通过crewai

angou6476的博客 582

时序定江山,功耗写风骨——解读时序库lib文件的奥义【芯片设计 lib文件】

lib库,全称liberty library format file:它是Liberty时序文件的简称,使用 Liberty 语法来编写。它可以通过library compiler/dc转换成.db文件(database),供synopsis家的DC和PT使用,也可以通过spyglass的library compiler来生成sglib文件,供spyglass使用。他们是等价的,但db文件是二进制格式,人类不可读。

LogicYarn的博客 2601

RuntimeError: shape ‘[-1, 784]‘ is invalid for input of size 68076

表示输入张量的形状是一个二维张量,第一个维度大小是 -1,第二个维度大小是 784,其中 -1 表示这个维度的大小是不确定的,而第二个维度大小为 784 表示每个样本有 784 个特征。检查输入数据的形状和大小,确保它们与模型期望的输入匹配。如果使用的是预处理后的数据,请确保预处理步骤正确。检查模型定义,确保模型期望的输入大小与实际输入数据的大小匹配。这个错误通常是由于输入数据的大小与模型期望的输入大小不匹配导致的。为了解决这个错误,可以需要检查输入数据的形状和大小是否与模型期望的输入匹配。

nature1949的博客 7914

Sony DPT RP1/CP1破解攻略

前言 自己有一台Sony DPT CP1和一台kindle,两个都已经用了很多年。直到最近发现微信读书上经常可以找到一些免费而且不错的书,所以就萌生了在两台机器上使用微信读书的想法。kindle比较容易实现,直接打开内置浏览器,进入微信读书网页版就行了,而Sony的电纸书则只能通过破解+安装微信读书的方式实现。大概弄了两三个小时吧,也遇到了一些问题,所以这里记录一下整个过程,希望能方便后来的使用者。 首先感谢HappyZ, osc_t5nbj8ds。前者是提供公开破解的方法的大神,后者则是解决了我遇到的问题

weixin_43467572的博客 1万+

在python中遇到的错误(二):用pytorch的CNN发生的报错

解决报错:1.conv2d() received an invalid combination of arguments 2.expected scalar type double but found float 3.shape '[-1, 3136]' is invalid for input of size 352000004.expected scalar type Long but found Double 4.训练精度和测试精度低的离谱

qq_49979147的博客 1万+

ImportError: DLL load failed: 找不到指定的程序的解决方案

本文主要介绍了ImportError: DLL load failed: 找不到指定的程序的解决方案,希望能对使用Python的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 18万+

[系统安全] 四十七.恶意软件分析 (3)动态分析经典沙箱Cape的安装和基础用法详解

系统安全将更好地帮助初学者了解病毒逆向分析和系统安全。前文详细介绍恶意代码静态分析经典工具Capa的基础用法,以及批量提取静态特征和ATT&CK技战术,主要是从提取的静态特征Json文件中提取关键特征。这篇文章将详细讲解动态分析沙箱Cape,其是一个开源的自动恶意软件分析系统,通过自动运行和分析恶意软件,全面分析和提取恶意软件的关键特征。本文先介绍Cape沙箱的安装和基础用法,后续随着深入再分享。基础性文章,希望对您有帮助!

杨秀璋的专栏 6730

RuntimeError:shape ‘[4, 3, 85, 80, 80]‘ is invalid for input of size 537600

解决办法:修改cfg文件,把classes和filters进行修改(filters=(classes+5)*3),对应自己的数据集类别数,注意yolo层有三层,直接把cfg文件拉到最后,从最后开始往上改三层。(1)使用自己 的数据集时,数据集与源代码的数据集的类别数不同,没有修改成对应的类别数。解决办法:把得到的权重文件,复制到路径浅的地方。(2)权重文件即pt文件路径太深。

njj15760675213的博客 5370

【STK】手把手教你利用STK进行导弹和反导仿真02 - STK/MMT模块01 导弹任务分析工具概述

种工具:导弹设计工具(Missile Design Tool,MDT )、导弹飞行工具(Missile Flight Tool,截弹,或者用内置拦截弹编辑器创建的个性化的拦截弹, IFT 能够对 ―一对一 ‖动能拦截。导设置系统参数, 并对其有效性进行验证, 画性能图,保证该设计是可行的。(SAIC)公司联合开发研制,极大扩展了 STK 原有的导弹对象的功能,能够精确仿真。IFT 能够对拦截飞机、 导弹、卫星等目标进行仿真和分析。(2)推进系统参数,包括推力,比冲,秒流量,推力持续时间,喷嘴出口面积,

weixin_44184852的博客 1876
上一篇: PCA向量空间推导
下一篇: 切比雪夫不等式 ≥ε≤
FakeOccupational
博客等级 码龄6年 2万+粉丝 1727原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值