首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PyTorch "where“条件-- RuntimeError:需要标量类型long long,但找到了float

PyTorch中的"where"条件是一个用于根据给定条件选择元素的函数。它的作用类似于其他编程语言中的条件语句,可以根据条件选择性地执行不同的操作。

在PyTorch中,"where"条件函数的使用方式如下:

torch.where(condition, x, y)

其中,condition是一个布尔张量,x和y是两个张量,它们的形状应该相同。函数会根据condition中的每个元素的值,选择x或y中对应位置的元素作为结果返回。

然而,当在使用"where"条件函数时遇到"RuntimeError:需要标量类型long long,但找到了float"的错误时,可能是由于输入的condition张量的数据类型不正确导致的。

为了解决这个问题,可以尝试将condition张量的数据类型转换为long类型。可以使用torch.long()函数将其转换为long类型,如下所示:

condition = condition.long()

这样,将condition张量转换为long类型后,再次使用"where"条件函数就不会出现上述错误了。

关于PyTorch的"where"条件函数的更多信息,您可以参考腾讯云的PyTorch官方文档:PyTorch官方文档

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Pytorch】笔记一:数据载体张量与线性回归

, 对 Pytorch 的使用依然是模模糊糊, 跟着人家的代码用 Pytorch 玩神经网络还行,也能读懂,自己亲手做的时候,直接无从下手,啥也想不起来, 我觉得我这种情况就不是对于某个程序练得不熟了...dtype:张量的数据类型,如 torch.FloatTensor,torch.cuda.FloatTensor,用的最多的一般是 float32 和 int64(torch.long) shape:张量的形状...,long 类型拼接会报错。...input 表示要索引的张量,mask 表示与 input 同形状的布尔类型的张量。这种情况在选择符合某些特定条件的元素的时候非常好使」,注意这个是返回一维的张量。...Tensor 的索引量,然后指定类型long 的 .masked_select:就是按照值的条件进行查找,需要先指定条件作为 mask 张量的变换「torch.reshape(input, shape

2.7K50

Pytorch中的.backward()方法

PyTorch的主要功能和特点之一就是backword函数,我知道一些基本的导数: Let, F = a*b Where, a = 10 b = 10∂F/∂a = b => ∂F/∂a = 20 ∂...RuntimeError: grad can be implicitly created only for scalar outputs 在文档中写道:当我们调用张量的反向函数时,如果张量是非标量(即它的数据有不止一个元素...另外,需要注意的另一件重要的事情是,默认情况下F.backward()与F.backward(gradient=torch.tensor([1.])相同,所以默认情况下,当输出张量是标量时,我们不需要传递梯度参数...当输出张量为标量时,则v_vector的大小为1,即torch.tensor([1.]),可以用值1代替。这样就得到了完整的雅可比矩阵,也就是J@v。...在一般的情况下,我们的损失值张量是一个标量值,我们的权值参数是计算图的叶子节点,所以我们不会得出上面讨论的误差条件

2.5K20

变量类型(cpugpu)

前言PyTorch中的数据类型为Tensor,Tensor与Numpy中的ndarray类似,同样可以用于标量,向量,矩阵乃至更高维度上面的计算。...PyTorch中的tensor又包括CPU上的数据类型和GPU上的数据类型,一般GPU上的Tensor是CPU上的Tensor加cuda()函数得到。通过使用Type函数可以查看变量类型。...为了方便测试,我们构建一个新的张量,你要转变成不同的类型需要根据自己的需求选择即可tensor = torch.Tensor(2, 5)torch.long() 将tensor投射为long类型newtensor...因为pytorch底层很多计算的逻辑默认需要的是这些类型。但是如果当你需要提高精度,比如说想把模型从float变为double。...此外,还要对所有的张量进行设置:pytorch.set_default_tensor_type('torch.DoubleTensor'),不过double比float要慢很多,要结合实际情况进行思考。

1.9K20

PyTorch入门笔记-堆叠stack函数

print(stack_ab.size()) # torch.Size([3, 32, 32, 2]) torch.cat(tensors, dim = 0) 函数有两个约束: 参数 tensors 中所有需要合并的张量必须是相同的数据类型...参数 tensors 中所有需要合并的张量必须是相同的数据类型 import torch # 模拟图像张量A a = torch.randint(0, 255, (3, 32, 32)) # 模拟图像张量...B b = torch.randn(3, 32, 32) print(a.dtype) # torch.int64 print(b.dtype) # torch.float32 # 非法堆叠,张量...([a, b], dim = 0) # RuntimeError: Expected object of scalar type long int but got scalar type float for...所有待合并的张量形状必须完全一致 torch.stack 也需要满足张量堆叠合并的条件,它需要所有待合并的张量形状完全一致才可以进行合并。如果待合并张量的形状不一致时,进行堆叠合并会发生错误。

6.4K21

PyTorch 4.0版本迁移指南

更确切地说,torch.Tensor能够像旧版Variable一样追踪历史; Variable封装还像过去那样工作,返回一个torch.Tensor类型的对象。...这意味着你不再需要在代码中到处使用Variable封装器。 在type()的Tensor更改 还要注意,张量的type()不再反映数据类型。...幸运的是,此版本在PyTorch中引入了标量(0维张量)的支持!...0.4.0之前,loss是一个封装了(1,)张量的Variable,0.4.0的loss现在是一个零维的标量。索引到标量是没有意义的(现在它会给出一个警告,但在0.5.0中将是一个系统错误)。...中,我们用来指定数据类型(例如float或 double),设备类型(cpu或cuda)和布局(dense或sparse)作为“tensor type”。

2.7K20

PyTorch代码调试利器: 自动print每行代码的Tensor信息

:比如说运行自己编写的 PyTorch 代码的时候,PyTorch 提示你说数据类型不匹配,需要一个 double 的 tensor 但是你给的却是 float;再或者就是需要一个 CUDA tensor...比如下面这种: RuntimeError: Expected object of scalar type Double but got scalar type Float 这种问题调试起来很麻烦,因为你不知道从哪里开始出问题的...() 装饰一下要调试的函数,这个函数在执行的时候,就会自动 print 出来每一行的执行结果的 tensor 的形状、数据类型、设备、是否需要梯度的信息。...but got scalar type Long for argument #2 'mask' 好吧,这次错误出在了数据类型上。...这次错误报告比较有提示性,我们大概能知道是我们的 mask 的数据类型错了。

1.1K20

PyTorch代码调试利器: 自动print每行代码的Tensor信息

大家可能遇到这样子的困扰:比如说运行自己编写的 PyTorch 代码的时候,PyTorch 提示你说数据类型不匹配,需要一个 double 的 tensor 但是你给的却是 float;再或者就是需要一个...比如下面这种: RuntimeError: Expected object of scalar type Double but got scalar type Float 这种问题调试起来很麻烦,因为你不知道从哪里开始出问题的...() 装饰一下要调试的函数,这个函数在执行的时候,就会自动 print 出来每一行的执行结果的 tensor 的形状、数据类型、设备、是否需要梯度的信息。...but got scalar type Long for argument #2 mask 好吧,这次错误出在了数据类型上。...这次错误报告比较有提示性,我们大概能知道是我们的 mask 的数据类型错了。

1.1K10

PyTorch 学习 -1- 张量

本节目录 张量的简介 PyTorch如何创建张量 PyTorch中张量的操作 PyTorch中张量的广播机制 张量 几何代数中定义的张量是基于向量和矩阵的推广,比如我们可以将标量视为零阶张量,矢量可以视为一阶张量...张量维度 代表含义 0维张量 代表的是标量(数字) 1维张量 代表的是向量 2维张量 代表的是矩阵 3维张量 时间序列数据 股价 文本数据 单张彩色图片(RGB) 张量是现代机器学习的基础。...它的核心是一个数据容器,多数情况下,它包含数字,有时候它也包含字符串,这种情况比较少。因此可以把它想象成一个数字的水桶。...long。...4], [4, 5]]) 由于x和y分别是1行2列和3行1列的矩阵,如果要计算x+y,那么x中第一行的2个元素被广播 (复制)到了第二行和第三行,⽽y中第⼀列的3个元素被广播(复制)到了第二列

22920

tensors used as indices must be long or byte tensors

在使用张量作为索引时,我们常常会遇到“RuntimeError: tensors used as indices must be long or byte tensors”的错误。...错误原因这个错误的原因是,PyTorch中的张量索引操作要求使用长整型(Long)或字节型(Byte)张量作为索引。...如果我们使用了其他类型的张量,如浮点型(Float)、整型(Int)、布尔型(Bool)等,就会触发这个错误。解决方法下面介绍几种解决方法,以帮助您正确处理这个错误。...这样做会将索引张量的数据类型转换为与要索引的张量相匹配的类型。...您可以通过使用​​.long()​​或​​.byte()​​方法将索引张量转换为所需的数据类型,或使用​​.index_select(dim, index_tensor)​​方法来正确进行索引操作。

31930

Variable和Tensor合并后,PyTorch的代码要怎么改?

更确切地说,torch.Tensor 能够追踪日志并像旧版本的 Variable 那样运行; Variable 封装仍旧可以像以前一样工作,返回的对象类型是 torch.Tensor。...Tensor 中 type () 的变化 这里需要注意到张量的 type()不再反映数据类型,而是改用 isinstance() 或 x.type() 来表示数据类型,代码如下: >>> x = torch.DoubleTensor...另一种更安全的方法是使用 x.detach(),它将返回一个与 requires_grad = False 时共享数据的 Tensor,如果在反向过程中需要 x,那么 autograd 将会就地更改它...幸运的是,新版本的PyTorch中引入了适当的标量(0维张量)支持!...中,我们通常需要指定数据类型(例如 float vs double),设备类型(cpu vs cuda)和布局(dense vs sparse)作为“张量类型”。

9.9K40

pytorch lstm时间序列预测问题踩坑「建议收藏」

为多个输入对应多个或一个输出 2.损失函数 注意:不能用交叉熵 nn.CrossEntropyLoss() nn.CrossEntropyLoss()要求target目标值即真实值是标签,是torch.int64类型数据...,即整数,不允许小数,如果输入小数会强行取整, 应该用 nn.MSELoss() 我在这个问题上纠结了很久,总是显示 RuntimeError: expected scalar type Long but...found Float 导致我找了很久怎么样才能把torch.float64保留小数的情况下转成long,后来查资料torch.long就是torch.int64,简直变态 后来一点一点往上才知道的这个错误...分类问题是有准确率这个评价的,但是我训练的rnn,loss一直降低,但是准确率为0,才反应过来,回归问题很难达到完全一致 3.结果 这是测试集预测结果,前10步预测后1步,勉强可以 训练集结果: 之后需要...根据上一步预测结果预测下一个——做不到,x为13个变量,y只有1个,无法用y作为下一个x 一个预测结果评价指标 transformer编码解码 发布者:全栈程序员栈长,转载请注明出处:https://

83710

Pytorch 】笔记十:剩下的一些内容(完结)

的使用依然是模模糊糊, 跟着人家的代码用 Pytorch 玩神经网络还行,也能读懂,自己亲手做的时候,直接无从下手,啥也想不起来, 我觉得我这种情况就不是对于某个程序练得不熟了,而是对 Pytorch...所以我们的 checkpoint 里面需要保存模型的数据,优化器的数据,还有迭代到了第几次。 ? 下面通过人民币二分类的实验,模拟一个训练过程中的意外中断和恢复,看看怎么使用这个断点续训练: ?.../ 设备 tensor.to (*args,kwargs) x = torch.ones ((3,3)) x = x.to (torch.float64) # 转换数据类型 x = torch.ones...Got 可能原因:当前操作需要 PIL Image 或 ndarry 数据类型传入了 Tensor 解决方法: 检查 transform 中是否存在两次...报错:python RuntimeError: expected device cuda:0 and dtype Long but got device cpu and dtype Long Expected

1.9K61

从UDF不应有状态 切入来剖析Flink SQL代码生成 (修订版)

LogicalFilter被转换为LogicalCalc,经过思考我们可以知道,Filter的Condition条件需要进行计算才能获得的,所以需要转换为Calc。...实现一个标量函数需要继承ScalarFunction,并且实现一个或者多个evaluation方法。标量函数的行为就是通过evaluation方法来实现的。...evaluation方法的输入参数类型和返回值类型决定着标量函数的输入参数类型和返回值类型。 另外 UDF 也有open方法和close方法可选。我们稍后会提到。 3....我们思考下可知,Filter的Condition条件需要进行计算才能获得的,所以需要转换为Calc。...即使原始SQL中只有一次UDF调用,但是如果SELECT和WHERE都间接用到了UDF,那么最终"投影运算"和"过滤条件"就会分别调用了UDF,所以拼接之后就会有多个UDF调用。

2.7K20

PyTorch 学习笔记

有几点需要注意: PyTorch 对应的 Python 包名为 torch 而非 pytorch 若需使用 GPU 版本的 PyTorch, 需要先配置英伟达显卡驱动,再安装 PyTorch PS: 为了方便最好是将...当然你也可以重新指定类型,就像这样: >>> d_float = torch.ones_like(a, dtype=torch.float) 类似的,要创建与其他张量具有相似类型大小不同的张量,使用...torch.float32 张量运算 张量可以进行转置、索引、切片、数学运算等操作,使用方法也是与 numpy 类似 特别需要注意的是,自动赋值运算通常在方法后有 _ 作为后缀, 例如: x.copy...requires_grad=True) >>> z = 3 * x**2 + 2 * y**2 >>> z.backward() Traceback (most recent call last): RuntimeError...一些注意点: 要想使 x 支持求导,必须让 x 为浮点类型,定义时应该是 [1., 2., 3.] 而不是 [1, 2, 3]。 在求导时,只能是标量标量,或者标量对向量/矩阵求导。

69010

在OneFlow实现数据类型自动提升

类型提升 从上图可以看到: 不同数据类型的提升遵循这个连接的规则 虚线表示python标量在溢出的时候未定义 bool int float之间没有连线,表示这种混合类型的提升未定义 关于第一条,我们可以看...int8和uint8,两者最终指向了int16,表示两者运算后最终类型提升到了int16 而根据这一个规则,我们可以列出一个类型提升表格(这个表格很重要,后续看Pytorch源码也会用到) 以unsigned...= torch.int16 out2 = x_tensor + 2.0 # out.dtype = torch.float32 需要注意的是,Array与Scalar的行为会和Array与0d Array...RuntimeError: dot : expected both vectors to have same dtype, but found Short and Float 输入存在一个最低数据类型...看似很简单,实际调研+推敲细节也搞了两三周,最后感谢同事在我完成这个功能的期间提供的许多帮助!

28110

Automatic differentiation package - torch.autograd

torch.autograd提供实现任意标量值函数的自动微分的类和函数。它只需要对现有代码进行最小的更改—您只需要声明张量s,对于该张量,应该使用requires_grad=True关键字计算梯度。...如果任何张量是非标量的(即它们的数据有多个元素),并且需要梯度,那么将计算雅可比向量积,在这种情况下,函数还需要指定grad_tensors。...对于标量张量或不需要grad的张量,不能指定任何值。如果一个None值对所有grad_tensors都是可接受的,那么这个参数是可选的。...如果张量是非标量的(即它的数据有多个元素),并且需要梯度,那么函数还需要指定梯度。它应该是一个匹配类型和位置的张量,包含微分函数w.r.t. self的梯度。...如果它是一个张量,它将自动转换成一个不需要grad的张量,除非create_graph为真。对于标量张量或不需要grad的张量,不能指定任何值。如果一个None值是可接受的,那么这个参数是可选的。

1.4K10
领券