torch
.
baddbmm(beta
=1
, mat, alpha
=1
, batch1, batch2, out
=
None
)
-->
Tensor :对两个批
batch1
和
batch2
内存储的矩阵进行批矩阵乘操作,矩阵
mat 加到最终结果。batch1
和
batch2
都为包含相同数量矩阵的
3 维张量。如果
batch1 是形为b
×
n
×
m
的张量,
batch1
是形为
b
×
m
×
p
的张量,则
out
和
mat
的形状都是
n
× p即resi
= (
beta
·
Mi
) + (
al pha
·
batch
1
i
×
batch
2
i))
对类型为 _FloatTensor_ 或_DoubleTensor的输入,alphaand beta
必须为实数,否则两个参数须为整数。
参数:
--beta (Number, optional)
:用于
mat
的乘子
--mat (Tensor)
:相加矩阵
--alpha (Number, optional)
:用于
batch1@batch2
的乘子
--batch1 (Tensor)
:第一批相乘矩阵
--batch2 (Tensor)
:第二批相乘矩阵
--out (Tensor, optional)
:输出张量
例子:
>>> M = torch.randn(10, 3, 5)
>>> batch1 = torch.randn(10, 3, 4)
>>> batch2 = torch.randn(10, 4, 5)
>>> torch.baddbmm(M, batch1, batch2).size()
torch.Size([10, 3, 5])
torch
.
bmm(batch1, batch2, out
=
None
)
-->
Tensor :对存储在两个批 batch1
和
batch2
内的矩阵进行批矩阵乘操作。batch1
和
batch2
都为包含相同数量矩阵的 3
维张量。如果
batch1
是形为
b
×
n
×
m
的张量,
batch1
是形为
b
×
m
×
p
的张量,则 out和
mat
的形状都是
n
×
p
,即
res
= (
beta
·
M
) + (
al pha
·
sum
(
batch
1
i
@
batch
2
i
,
i
=
0
,
b))对类型为
FloatTensor
或
DoubleTensor 的输入,
alpha
、
beta
必须为实数,否则两个 参数须为整数。
参数:
--
batch1 (Tensor)
:第一批相乘矩阵
--batch2 (Tensor)
:第二批相乘矩阵
--out (Tensor, optional)
:输出张量
例子:
>>> batch1 = torch.randn(10, 3, 4)
>>> batch2 = torch.randn(10, 4, 5)
>>> res = torch.bmm(batch1, batch2)
>>> res.size()
torch.Size([10, 3, 5])
torch
.
btrifact(A, info
=
None
)
-->
Tensor, IntTensor :返回一个元祖,包含
LU
分解和
pivots
。可选参数
info
决定是否对每个
minibatch 样本进行分解。infoare from dgetrf and a non-zero value indicates an error occurred. 如果用 CUDA 的
话,这个值来自于
CUBLAS
,否则来自
LAPACK
。
参数:
--A (Tensor)
:待分解张量
例子:
>>> A = torch.randn(2, 3, 3)
>>> A_LU = A.btrifact()
torch
.
btrisolve(b, LU_data, LU_pivots)
-->
Tensor :返回线性方程组Ax
=
b
的
LU
解。
参数:
--
b (Tensor)
:
RHS
张量
--LU_data (Tensor)
:
Pivoted LU factorization of A from btrifact.
--LU_pivots (IntTensor)
:
LU
分解的
Pivots.
例子:
>>> A = torch.randn(2, 3, 3)
>>> b = torch.randn(2, 3)
>>> A_LU = torch.btrifact(A)
>>> x = b.btrisolve(*A_LU)
>>> torch.norm(A.bmm(x.unsqueeze(2)) - b)
6.664001874625056e-08
torch
.
dot(tensor1, tensor2)
-->
float
:计算两个张量的点乘
(
内乘
), 两个张量都为
1-D
向量
.
例子:
>>> torch.dot(torch.Tensor([2, 3]), torch.Tensor([2, 1]))
7.0
torch
.
eig(a, eigenvectors
=
False
, out
=
None
)
->
(Tensor, Tensor) :计算实方阵
a
的特征值和特征向量。
参数:
--a (Tensor)
:方阵,待计算其特征值和特征向
--eigenvectors (bool)
:布尔值,如果
True,则同时计算特征值和特征向量,否则只计算特征值。
--out (tuple, optional)
:输出元组
--返回值:元组,包括:
*
e (Tensor)
:
a
的右特征向量
*
v (Tensor)
:如果
eigenvectors
为
True
,则为包含特征向量的张量
;
否则为 空张量
返回值类型:
(Tensor, Tensor)
torch
.
gels(B, A, out
=
None
)
-->
Tensor :对形如
m
×
n
的满秩矩阵
a 计算其最小二乘和最小范数问题的解。如果
m
≥
n
,gels 对最小二乘问题进行求解,即:minimize
∥
AX
−
B
∥
F
如果
m
<
n
,gels
求解最小范数问题,即:
minimize
∥
X
∥
F
sub jectto a b AX =
B
返回矩阵
X
的前
n
行包含解。余下的行包含以下残差信息:相应列从第
n 行开始计 算的每列的欧式距离。
返回矩阵总是被转置,无论输入矩阵的原始布局如何,总会被转置;即,总是有
stride (1, m)
而不是
(m, 1)
。
参数:
--B (Tensor)
:矩阵
B
--
A (Tensor)
:
m
×
n
矩阵
--out (tuple, optional)
:输出元组
--返回值:元组,包括:
--
X (Tensor)
:最小二乘解
--qr (Tensor)
:
QR
分解的细节
--返回值类型:
(Tensor, Tensor)
例子:
>>> A = torch.Tensor([[1, 1, 1],
... [2, 3, 4],
... [3, 5, 2],
... [4, 2, 5],
... [5, 4, 3]])
>>> B = torch.Tensor([[-10, -3], [ 12, 14], [ 14, 12], [ 16, 16], [ 18, 16]])
>>> X, _ = torch.gels(B, A)
>>> X
2.0000 1.0000
1.0000 1.0000
1.0000 2.0000
[torch.FloatTensor of size 3x2]