目录
先看看(1)函数的中文说明: >>然后 有(2)解析运算说明图解
-
(1)函数说明
torch.addbmm
torch.addbmm(beta=1, mat, alpha=1, batch1, batch2, out=None) → Tensor
对两个批 batch1 和 batch2 内存储的矩阵进行批矩阵乘操作,附带 reduced add 步骤( 所有矩阵
乘结果沿着第一维相加)。矩阵 mat 加到最终结果。 batch1 和 batch2 都为包含相同数量矩阵的 3
维张量。 如果 batch1 是形为 b×n×m 的张量, batch1 是形为 b×m×p 的张量,则 out 和 mat 的形状
都是 n×p,即 res=(beta∗M)+(alpha∗sum(batch1i@batch2i,i=0,b))
对类型为 FloatTensor 或 DoubleTensor 的输入, alphaand beta 必须为实数,否则两个参数须为
整数。
参数:
beta (Number, optional) – 用于 mat 的乘子
mat (Tensor) – 相加矩阵
alpha (Number, optional) – 用于 batch1@batch2batch1@batch2 的乘子
batch1 (Tensor) – 第一批相乘矩阵
batch2 (Tensor) – 第二批相乘矩阵
out (Tensor, optional) – 输出张量
例子:
>>> M = torch.randn(3, 5)
>>> batch1 = torch.randn(10, 3, 4)
>>> batch2 = torch.randn(10, 4, 5)
>>> torch.addbmm(M, batch1, batch2)
-3.1162 11.0071 7.3102 0.1824 -7.6892
1.8265 6.0739 0.4589 -0.5641 -5.4283
-9.3387 -0.1794 -1.2318 -6.8841 -4.7239
[torch.FloatTensor of size 3x5]
以上为找到的中文文档的内容 下面进行 输入输出的计算模拟
-
(2):1输入输出测试:
m 3*3
h1 3*3*3
h1 3*3*3
beta=1
alpha=1
In [17]: m
Out[17]:
tensor([[0.5000, 0.5000, 0.5000],
[0.5000, 0.5000, 0.5000],
[0.5000, 0.5000, 0.5000]])
In [18]: h1
Out[18]:
tensor([[[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]],
[[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]],
[[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]]])
In [19]: h2
Out[19]:
tensor([[[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]],
[[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]],
[[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]]])
In [20]: torch.addbmm(m,h1,h2)
Out[20]:
tensor([[9.5000, 9.5000, 9.5000],
[9.5000, 9.5000, 9.5000],
[9.5000, 9.5000, 9.5000]])
torch.addbmm(beta=2, mat=m, alpha=1, batch1=h1, batch2=h2 )
beta参数改变一下看看结果
beta=2
In [27]: torch.addbmm(2,m,1,h1,h2 )
Out[27]:
tensor([[10., 10., 10.],
[10., 10., 10.],
[10., 10., 10.]])
运算结果 模拟:
alpha参数改变一下看看结果
alpha=1
In [28]: torch.addbmm(1,m,2,h1,h2 )
Out[28]:
tensor([[18.5000, 18.5000, 18.5000],
[18.5000, 18.5000, 18.5000],
[18.5000, 18.5000, 18.5000]])
运算结果模拟: