【无标题】Pytorch 中范数求解遇到的问题之RuntimeError的解决办法,和新的范数求解语法规则

    今天,在学习范数求解的章节时发现一个问题,用视频中范数求解的语法规则输入后会出现RuntimeError: norm(): input dtype should be either floating point or complex dtypes. Got Long instead. 这样的错误提示,下面提供解决办法。

    我搜索了一些资料后发现很多中求解语法,一一试验后都不正确,在查询了系统注释后明白是语法规则发生了变化。

如下面类定义所示:

其参数包括: input, p, dim, keepdim, out, dtype 。

input:输入张量。它的数据类型必须是浮点型或复数型。对于复数的输入,范数使用每个元素的绝对值。注意,输入张量中元素的数据类型一定得是浮点型或者是复数哦,不然就会报错!这个就是主要变化,其次是不能使用 input.norm

p:范数的阶数。默认是2阶—“fro”,也就是弗罗贝尼乌斯范数(Frobenius norm)。如果输入p=某个正整数,则求解对应的p阶范数。其公式为  sum(abs(x)**p)**(1./p)

dim:对输入的张量计算其指定维度(如dim=1,则表示计算第二个维度)上所有元素的范数。如果不对dim进行赋值,则会计算输入张量所有维度上的范数。当然如果指定维数不在输入张量的尺寸之内,将出现错误。

示例:

>>> import torch
>>> a = torch.arange(9, dtype= torch.float) – 4
>>> b = a.reshape((3, 3))
>>> torch.norm(a)
tensor(7.7460)
>>> torch.norm(b)
tensor(7.7460)

也可以:

>>>a.norm()
tensor(7.7460)

希望能帮助和我一样被困扰的你。

你可能感兴趣的:(pytorch范数求解,python,pytorch)