PyTorch平方根报错怎么办(pytorch,开发技术)

时间:2024-04-27 15:43:19 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    PyTorch%E5%B9%B3%E6%96%B9%E6%A0%B9%E6%8A%A5%E9%94%99%E6%80%8E%E4%B9%88%E5%8A%9E

初步使用PyTorch进行平方根计算,通过range()创建一个张量,然后对其求平方根。

报出以下错误:

RuntimeError: sqrt_vml_cpu not implemented for 'Long'

Long类型的数据不支持log对数运算, 为什么Tensor是Long类型? 因为创建List数组时默认使用的是int, 所以从List转成torch.Tensor后, 数据类型变成了Long。

torch.int64

提前将数据类型指定为浮点型, 重新执行:

tensor([0.0000, 1.0000, 1.4142, 1.7321, 2.0000, 2.2361, 2.4495, 2.6458, 2.8284], dtype=torch.float64)

补充:pytorch20 pytorch常见运算详解

这个是矩阵(张量)每一个元素与标量进行操作。

这个就是两个相同尺寸的张量相乘,然后对应元素的相乘就是这个哈达玛积,也成为element wise。

这个torch.mul()和*是等价的。

当然,除法也是类似的:

我们可以发现的torch.div()其实就是/, 类似的:torch.add就是+,torch.sub()就是-,不过符号的运算更简单常用。

如果我们想实现线性代数中的矩阵相乘怎么办呢?

这样的操作有三个写法:

torch.mm()

torch.matmul()

@,这个需要记忆,不然遇到这个可能会挺蒙蔽的

PyTorch平方根报错怎么办

这是对二维矩阵而言的,假如参与运算的是一个多维张量,那么只有torch.matmul()可以使用。等等,多维张量怎么进行矩阵的乘法?在多维张量中,参与矩阵运算的其实只有后两个维度,前面的维度其实就像是索引一样,举个例子:

PyTorch平方根报错怎么办

这样也是可以相乘的,因为这里涉及一个自动传播Broadcasting机制,这个在后面会讲,这里就知道,如果这种情况下,会把b的第一维度复制3次 ,然后变成和a一样的尺寸,进行矩阵相乘。

和上面一样,不多说了。开方运算可以用torch.sqrt(),当然也可以用a**(0.5)。

在上学的时候,我们知道ln是以e为底的,但是在pytorch中,并不是这样。

pytorch中log是以e自然数为底数的,然后log2和log10才是以2和10为底数的运算。

.ceil() 向上取整

.floor()向下取整

.trunc()取整数

.frac()取小数

.round()四舍五入

.ceil() 向上取整.floor()向下取整.trunc()取整数.frac()取小数.round()四舍五入

这个是让一个数,限制在你自己设置的一个范围内[min,max],小于min的话就被设置为min,大于max的话就被设置为max。这个操作在一些对抗生成网络中,好像是WGAN-GP,通过强行限制模型的参数的值。

本文:PyTorch平方根报错怎么办的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:pytorch如何自动打印每行代码的tensor信息下一篇:

11 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18