🍅 写在前面
👨🎓 博主介绍:大家好,这里是hyk写算法了吗,一枚致力于学习算法和人工智能领域的小菜鸟。
🔎个人主页:主页链接(欢迎各位大佬光临指导)
⭐️近期专栏:机器学习与深度学习
LeetCode算法实例
张量分解
目录
- torch.abs
- torch.acos(input, out=None) → Tensor
- torch.add()
- torch.addcdiv
- torch.addcmul
- torch.asin
- torch.atan
- torch.ceil
- torch.clamp
- torch.cos
- torch.cosh
- torch.div()
- torch.exp
- torch.floor(input, out=None) → Tensor
- torch.fmod
- torch.frac
- torch.log
- torch.mul
- torch.neg
- torch.pow
- torch.pow(base, input, out=None)
- torch.reciprocal
- torch.remainder
- torch.round
- torch.rsqrt
- torch.sigmoid
- torch.sin
- torch.sinh
- torch.sqrt
- torch.tan
- torch.tanh
- torch.trunc
torch.abs
torch.abs(input, out=None) → Tensor
计算输入张量的每个元素绝对值
例子:
>>> torch.abs(torch.FloatTensor([-1, -2, 3]))
FloatTensor([1, 2, 3])
torch.acos(input, out=None) → Tensor
返回一个新张量,包含输入张量每个元素的反余弦。
参数:
input (Tensor) – 输入张量
out (Tensor, optional) – 结果张量
例子:
>>> a = torch.randn(4)
>>> a
-0.6366
0.2718
0.4469
1.3122
[torch.FloatTensor of size 4]
>>> torch.acos(a)
2.2608
1.2956
1.1075
nan
[torch.FloatTensor of size 4]
torch.add()
torch.add(input, value, out=None)
对输入张量input逐元素加上标量值value,并返回结果到一个新的张量out,即 out=tensor+value
。
如果输入input是FloatTensor or DoubleTensor类型,则value 必须为实数,否则须为整数。【译注:似乎并非如此,无关输入类型,value取整数、实数皆可。】
参数:
input (Tensor) – 输入张量
value (Number) – 添加到输入每个元素的数
out (Tensor, optional) – 结果张量
>>> a = torch.randn(4)
>>> a
0.4050
-1.2227
1.8688
-0.4185
[torch.FloatTensor of size 4]
>>> torch.add(a, 20)
20.4050
18.7773
21.8688
19.5815
[torch.FloatTensor of size 4]
torch.addcdiv
torch.addcdiv(tensor, value=1, tensor1, tensor2, out=None) → Tensor
用tensor2对tensor1逐元素相除,然后乘以标量值value 并加到tensor。
张量的形状不需要匹配,但元素数量必须一致。
如果输入是FloatTensor or DoubleTensor类型,则value 必须为实数,否则须为整数。
参数:
tensor (Tensor) – 张量,对 tensor1 ./ tensor 进行相加
value (Number, optional) – 标量,对 tensor1 ./ tensor2 进行相乘
tensor1 (Tensor) – 张量,作为被除数(分子)
tensor2 (Tensor) –张量,作为除数(分母)
out (Tensor, optional) – 输出张量
例子:
>>> t = torch.randn(2, 3)
>>> t1 = torch.randn(1, 6)
>>> t2 = torch.randn(6, 1)
>>> torch.addcdiv(t, 0.1, t1, t2)
0.0122 -0.0188 -0.2354
0.7396 -1.5721 1.2878
[torch.FloatTensor of size 2x3]
torch.addcmul
torch.addcmul(tensor, value=1, tensor1, tensor2, out=None) → Tensor
用tensor2对tensor1逐元素相乘,并对结果乘以标量值value然后加到tensor。 张量的形状不需要匹配,但元素数量必须一致。 如果输入是FloatTensor or DoubleTensor类型,则value 必须为实数,否则须为整数。
参数:
tensor (Tensor) – 张量,对tensor1 ./ tensor 进行相加
value (Number, optional) – 标量,对 tensor1 . tensor2 进行相乘
tensor1 (Tensor) – 张量,作为乘子1
tensor2 (Tensor) –张量,作为乘子2
out (Tensor, optional) – 输出张量
例子:
>>> t = torch.randn(2, 3)
>>> t1 = torch.randn(1, 6)
>>> t2 = torch.randn(6, 1)
>>> torch.addcmul(t, 0.1, t1, t2)
0.0122 -0.0188 -0.2354
0.7396 -1.5721 1.2878
[torch.FloatTensor of size 2x3]
torch.asin
torch.asin(input, out=None) → Tensor
返回一个新张量,包含输入input张量每个元素的反正弦函数
参数:
tensor (Tensor) – 输入张量
out (Tensor, optional) – 输出张量
例子:
>>> a = torch.randn(4)
>>> a
-0.6366
0.2718
0.4469
1.3122
[torch.FloatTensor of size 4]
>>> torch.asin(a)
-0.6900
0.2752
0.4633
nan
[torch.FloatTensor of size 4]
torch.atan
torch.atan(input, out=None) → Tensor
返回一个新张量,包含输入input张量每个元素的反正切函数
参数:
tensor (Tensor) – 输入张量
out (Tensor, optional) – 输出张量
例子:
>>> a = torch.randn(4)
>>> a
-0.6366
0.2718
0.4469
1.3122
[torch.FloatTensor of size 4]
>>> torch.atan(a)
-0.5669
0.2653
0.4203
0.9196
[torch.FloatTensor of size 4]
torch.ceil
torch.ceil(input, out=None) → Tensor
天井函数,对输入input张量每个元素向上取整, 即取不小于每个元素的最小整数,并返回结果到输出。
参数:
input (Tensor) – 输入张量
out (Tensor, optional) – 输出张量
例子:
>>> a = torch.randn(4)
>>> a
1.3869
0.3912
-0.8634
-0.5468
[torch.FloatTensor of size 4]
>>> torch.ceil(a)
2
1
-0
-0
[torch.FloatTensor of size 4]
torch.clamp
torch.clamp(input, min, max, out=None) → Tensor
将输入input张量每个元素的夹紧到区间 [min,max]
,并返回结果到一个新张量。
操作定义如下:
| min, if x_i < min
y_i = | x_i, if min <= x_i <= max
| max, if x_i > max
如果输入是FloatTensor or DoubleTensor类型,则参数min max 必须为实数,否则须为整数。【译注:似乎并非如此,无关输入类型,min, max取整数、实数皆可。】
参数:
input (Tensor) – 输入张量
min (Number) – 限制范围下限
max (Number) – 限制范围上限
out (Tensor, optional) – 输出张量
例子:
>>> a = torch.randn(4)
>>> a
1.3869
0.3912
-0.8634
-0.5468
[torch.FloatTensor of size 4]
>>> torch.clamp(a, min=-0.5, max=0.5)
0.5000
0.3912
-0.5000
-0.5000
[torch.FloatTensor of size 4]
torch.cos
torch.cos(input, out=None) → Tensor
返回一个新张量,包含输入input张量每个元素的余弦。
参数:
input (Tensor) – 输入张量
out (Tensor, optional) – 输出张量
例子:
>>> a = torch.randn(4)
>>> a
-0.6366
0.2718
0.4469
1.3122
[torch.FloatTensor of size 4]
>>> torch.cos(a)
0.8041
0.9633
0.9018
0.2557
[torch.FloatTensor of size 4]
torch.cosh
torch.cosh(input, out=None) → Tensor
返回一个新张量,包含输入input张量每个元素的双曲余弦。
参数:
input (Tensor) – 输入张量
out (Tensor, optional) – 输出张量
例子:
>>> a = torch.randn(4)
>>> a
-0.6366
0.2718
0.4469
1.3122
[torch.FloatTensor of size 4]
>>> torch.cosh(a)
1.2095
1.0372
1.1015
1.9917
[torch.FloatTensor of size 4]
torch.div()
torch.div(input, value, out=None)
将input逐元素除以标量值value,并返回结果到输出张量out。 即 out=tensor/value
如果输入是FloatTensor or DoubleTensor类型,则参数 value 必须为实数,否则须为整数。【译注:似乎并非如此,无关输入类型,value取整数、实数皆可。】
参数:
input (Tensor) – 输入张量
value (Number) – 除数
out (Tensor, optional) – 输出张量
例子:
>>> a = torch.randn(5)
>>> a
-0.6147
-1.1237
-0.1604
-0.6853
0.1063
[torch.FloatTensor of size 5]
>>> torch.div(a, 0.5)
-1.2294
-2.2474
-0.3208
-1.3706
0.2126
[torch.FloatTensor of size 5]
torch.exp
torch.exp(tensor, out=None) → Tensor
返回一个新张量,包含输入input张量每个元素的指数。
参数:
input (Tensor) – 输入张量
out (Tensor, optional) – 输出张量
torch.floor(input, out=None) → Tensor
床函数: 返回一个新张量,包含输入input张量每个元素的floor,即不小于元素的最大整数。
参数:
input (Tensor) – 输入张量
out (Tensor, optional) – 输出张量
例子:
>>> a = torch.randn(4)
>>> a
1.3869
0.3912
-0.8634
-0.5468
[torch.FloatTensor of size 4]
>>> torch.floor(a)
1
0
-1
-1
[torch.FloatTensor of size 4]
torch.fmod
torch.fmod(input, divisor, out=None) → Tensor
计算除法余数。 除数与被除数可能同时含有整数和浮点数。此时,余数的正负与被除数相同。
参数: - input (Tensor) – 被除数 - divisor (Tensor or float) – 除数,一个数或与被除数相同类型的张量 - out (Tensor, optional) – 输出张量
例子:
>>> torch.fmod(torch.Tensor([-3, -2, -1, 1, 2, 3]), 2)
torch.FloatTensor([-1, -0, -1, 1, 0, 1])
>>> torch.fmod(torch.Tensor([1, 2, 3, 4, 5]), 1.5)
torch.FloatTensor([1.0, 0.5, 0.0, 1.0, 0.5])
参考: torch.remainder(), 计算逐元素余数, 相当于python 中的 % 操作符。
torch.frac
torch.frac(tensor, out=None) → Tensor
返回每个元素的分数部分。
例子:
>>> torch.frac(torch.Tensor([1, 2.5, -3.2])
torch.FloatTensor([0, 0.5, -0.2])
torch.lerp
torch.lerp(start, end, weight, out=None)
对两个张量以start,end做线性插值, 将结果返回到输出张量。
torch.log
torch.log(input, out=None) → Tensor
计算input 的自然对数
参数:
input (Tensor) – 输入张量
out (Tensor, optional) – 输出张量
例子:
>>> a = torch.randn(5)
>>> a
-0.4183
0.3722
-0.3091
0.4149
0.5857
[torch.FloatTensor of size 5]
>>> torch.log(a)
nan
-0.9883
nan
-0.8797
-0.5349
[torch.FloatTensor of size 5]
torch.mul
torch.mul(input, value, out=None)
用标量值value乘以输入input的每个元素,并返回一个新的结果张量。 out=tensor∗value
如果输入是FloatTensor or DoubleTensor类型,则value 必须为实数,否则须为整数。【译注:似乎并非如此,无关输入类型,value取整数、实数皆可。】
参数:
input (Tensor) – 输入张量
value (Number) – 乘到每个元素的数
out (Tensor, optional) – 输出张量
例子:
>>> a = torch.randn(3)
>>> a
-0.9374
-0.5254
-0.6069
[torch.FloatTensor of size 3]
>>> torch.mul(a, 100)
-93.7411
-52.5374
-60.6908
[torch.FloatTensor of size 3]
torch.neg
torch.neg(input, out=None) → Tensor
返回一个新张量,包含输入input 张量按元素取负。 即, out=−1∗input
参数:
input (Tensor) – 输入张量
out (Tensor, optional) – 输出张量
例子:
>>> a = torch.randn(5)
>>> a
-0.4430
1.1690
-0.8836
-0.4565
0.2968
[torch.FloatTensor of size 5]
>>> torch.neg(a)
0.4430
-1.1690
0.8836
0.4565
-0.2968
[torch.FloatTensor of size 5]
torch.pow
torch.pow(input, exponent, out=None)
对输入input的按元素求exponent次幂值,并返回结果张量。 幂值exponent 可以为单一 float 数或者与input相同元素数的张量。
当幂值为标量时,执行操作:
outi=xexponent
当幂值为张量时,执行操作:
outi=xexponenti
参数:
input (Tensor) – 输入张量
exponent (float or Tensor) – 幂值
out (Tensor, optional) – 输出张量
例子:
>>> a = torch.randn(4)
>>> a
-0.5274
-0.8232
-2.1128
1.7558
[torch.FloatTensor of size 4]
>>> torch.pow(a, 2)
0.2781
0.6776
4.4640
3.0829
[torch.FloatTensor of size 4]
>>> exp = torch.arange(1, 5)
>>> a = torch.arange(1, 5)
>>> a
1
2
3
4
[torch.FloatTensor of size 4]
>>> exp
1
2
3
4
[torch.FloatTensor of size 4]
>>> torch.pow(a, exp)
1
4
27
256
[torch.FloatTensor of size 4]
torch.pow(base, input, out=None)
base 为标量浮点值,input为张量, 返回的输出张量 out 与输入张量相同形状。
执行操作为:
outi=baseinputi
参数:
base (float) – 标量值,指数的底
input ( Tensor) – 幂值
out (Tensor, optional) – 输出张量
例子:
>>> exp = torch.arange(1, 5)
>>> base = 2
>>> torch.pow(base, exp)
2
4
8
16
[torch.FloatTensor of size 4]
torch.reciprocal
torch.reciprocal(input, out=None) → Tensor
返回一个新张量,包含输入input张量每个元素的倒数,即 1.0/x。
参数:
input (Tensor) – 输入张量
out (Tensor, optional) – 输出张量
例子:
>>> a = torch.randn(4)
>>> a
1.3869
0.3912
-0.8634
-0.5468
[torch.FloatTensor of size 4]
>>> torch.reciprocal(a)
0.7210
2.5565
-1.1583
-1.8289
[torch.FloatTensor of size 4]
torch.remainder
torch.remainder(input, divisor, out=None) → Tensor
返回一个新张量,包含输入input张量每个元素的除法余数。 除数与被除数可能同时包含整数或浮点数。余数与除数有相同的符号。
参数:
input (Tensor) – 被除数
divisor (Tensor or float) – 除数,一个数或者与除数相同大小的张量
out (Tensor, optional) – 输出张量
例子:
>>> torch.remainder(torch.Tensor([-3, -2, -1, 1, 2, 3]), 2)
torch.FloatTensor([1, 0, 1, 1, 0, 1])
>>> torch.remainder(torch.Tensor([1, 2, 3, 4, 5]), 1.5)
torch.FloatTensor([1.0, 0.5, 0.0, 1.0, 0.5])
参考: 函数torch.fmod() 同样可以计算除法余数,相当于 C 的 库函数fmod()
torch.round
torch.round(input, out=None) → Tensor
返回一个新张量,将输入input张量每个元素舍入到最近的整数。
参数:
input (Tensor) – 输入张量
out (Tensor, optional) – 输出张量
例子:
>>> a = torch.randn(4)
>>> a
1.2290
1.3409
-0.5662
-0.0899
[torch.FloatTensor of size 4]
>>> torch.round(a)
1
1
-1
-0
[torch.FloatTensor of size 4]
torch.rsqrt
torch.rsqrt(input, out=None) → Tensor
返回一个新张量,包含输入input张量每个元素的平方根倒数。
参数:
input (Tensor) – 输入张量
out (Tensor, optional) – 输出张量
例子:
>>> a = torch.randn(4)
>>> a
1.2290
1.3409
-0.5662
-0.0899
[torch.FloatTensor of size 4]
>>> torch.rsqrt(a)
0.9020
0.8636
nan
nan
[torch.FloatTensor of size 4]
torch.sigmoid
torch.sigmoid(input, out=None) → Tensor
返回一个新张量,包含输入input张量每个元素的sigmoid值。
参数:
input (Tensor) – 输入张量
out (Tensor, optional) – 输出张量
例子:
>>> a = torch.randn(4)
>>> a
-0.4972
1.3512
0.1056
-0.2650
[torch.FloatTensor of size 4]
>>> torch.sigmoid(a)
0.3782
0.7943
0.5264
0.4341
[torch.FloatTensor of size 4]
torch.sin
torch.sin(input, out=None) → Tensor
返回一个新张量,包含输入input张量每个元素的正弦。
参数:
input (Tensor) – 输入张量
out (Tensor, optional) – 输出张量
例子:
>>> a = torch.randn(4)
>>> a
-0.6366
0.2718
0.4469
1.3122
[torch.FloatTensor of size 4]
>>> torch.sin(a)
-0.5944
0.2684
0.4322
0.9667
[torch.FloatTensor of size 4]
torch.sinh
torch.sinh(input, out=None) → Tensor
返回一个新张量,包含输入input张量每个元素的双曲正弦。
参数:
input (Tensor) – 输入张量
out (Tensor, optional) – 输出张量
例子:
>>> a = torch.randn(4)
>>> a
-0.6366
0.2718
0.4469
1.3122
[torch.FloatTensor of size 4]
>>> torch.sinh(a)
-0.6804
0.2751
0.4619
1.7225
[torch.FloatTensor of size 4]
torch.sqrt
torch.sqrt(input, out=None) → Tensor
返回一个新张量,包含输入input张量每个元素的平方根。
参数:
input (Tensor) – 输入张量
out (Tensor, optional) – 输出张量
例子:
>>> a = torch.randn(4)
>>> a
1.2290
1.3409
-0.5662
-0.0899
[torch.FloatTensor of size 4]
>>> torch.sqrt(a)
1.1086
1.1580
nan
nan
[torch.FloatTensor of size 4]
torch.tan
torch.tan(input, out=None) → Tensor
返回一个新张量,包含输入input张量每个元素的正切。
参数:
input (Tensor) – 输入张量
out (Tensor, optional) – 输出张量
例子:
>>> a = torch.randn(4)
>>> a
-0.6366
0.2718
0.4469
1.3122
[torch.FloatTensor of size 4]
>>> torch.tan(a)
-0.7392
0.2786
0.4792
3.7801
[torch.FloatTensor of size 4]
torch.tanh
torch.tanh(input, out=None) → Tensor
返回一个新张量,包含输入input张量每个元素的双曲正切。
参数:
input (Tensor) – 输入张量
out (Tensor, optional) – 输出张量
例子:
>>> a = torch.randn(4)
>>> a
-0.6366
0.2718
0.4469
1.3122
[torch.FloatTensor of size 4]
>>> torch.tanh(a)
-0.5625
0.2653
0.4193
0.8648
[torch.FloatTensor of size 4]
torch.trunc
torch.trunc(input, out=None) → Tensor
返回一个新张量,包含输入input张量每个元素的截断值(标量x的截断值是最接近其的整数,其比x更接近零。简而言之,有符号数的小数部分被舍弃)。
参数:
input (Tensor) – 输入张量
out (Tensor, optional) – 输出张量
例子:
>>> a = torch.randn(4)
>>> a
-0.4972
1.3512
0.1056
-0.2650
[torch.FloatTensor of size 4]
>>> torch.trunc(a)
-0
1
0
-0
[torch.FloatTensor of size 4]