Pytorch 学习 - 3.pytorch 张量数学运算操作

3.1 加减乘除

加法 - add

import torch as t
t0 = t.randint(1,10,size=(3,4))
t1 = t.randint(1,10,size=(3,4))
print('t0 :', t0, '\n')
print('t1 :', t1, '\n')
t2 = t.add(t0,t1)
print('t2 :', t2, '\n')

t0 : tensor([[8, 5, 8, 8],
        [3, 5, 2, 6],
        [3, 7, 7, 5]]) 

t1 : tensor([[6, 1, 1, 6],
        [3, 4, 2, 8],
        [3, 3, 2, 9]]) 

t2 : tensor([[14,  6,  9, 14],
        [ 6,  9,  4, 14],
        [ 6, 10,  9, 14]]) 

sum = t0 + alpha*t1   

import torch as t
t0 = t.randint(1,10,size=(3,4))
t1 = t.ones(size=(3,4))
print('t0 :', t0, '\n')
print('t1 :', t1, '\n')
t2 = t.add(t0,t1,alpha=3)
print('t2 :', t2, '\n')

t0 : tensor([[5, 5, 5, 7], [8, 5, 6, 9], [3, 3, 9, 6]])

t1 : tensor([[1., 1., 1., 1.], [1., 1., 1., 1.], [1., 1., 1., 1.]])

t2 : tensor([[ 8, 8, 8, 10], [11, 8, 9, 12], [ 6, 6, 12, 9]])

与这个效果一样

import torch as t
t0 = t.randint(1,10,size=(3,4))
t1 = t.ones(size=(3,4))
print('t0 :', t0, '\n')
print('t1 :', t1, '\n')
t2 = t.add(t0,1,alpha=3)  #<<<<<<< t1 --> 1
print('t2 :', t2, '\n')

加法结合乘法 - addcmul()

output = t0 + value x t1 x t2

语法 ts = t.addcmul(t0,value=2,tensor1=t1,tensor2=t2)

import torch as t
t0 = t.randint(1,10,size=(3,4))
t1 = t.randint(1,10,size=(3,4))
t2 = t.randint(1,10,size=(3,4))
print('t0 :', t0, '\n')
print('t1 :', t1, '\n')
print('t2 :', t2, '\n')
ts = t.addcmul(t0,value=2,tensor1=t1,tensor2=t2)
print('ts :', ts, '\n')

t0 : tensor([[1, 1, 7, 9], [3, 8, 7, 4], [4, 1, 2, 6]])

t1 : tensor([[4, 6, 5, 5], [5, 6, 8, 3], [1, 8, 6, 4]])

t2 : tensor([[4, 3, 7, 8], [3, 6, 6, 5], [4, 8, 5, 4]])

ts : tensor([[ 33, 37, 77, 89], [ 33, 80, 103, 34], [ 12, 129, 62, 38]])

加法结合除法 - addcdiv()

output = t0 + value x t1 / t2

语法 ts = t.addcdiv(t0,value=2,tensor1=t1,tensor2=t2)

import torch as t
t0 = t.randn(size=(3,4),dtype=t.float)
t1 = t.randn(size=(3,4),dtype=t.float)
t2 = t.randn(size=(3,4),dtype=t.float)
print('t0 :', t0, '\n')
print('t1 :', t1, '\n')
print('t2 :', t2, '\n')

ts = t.addcdiv(t0,value=2,tensor1=t1,tensor2=t2)
print('ts :', ts, '\n')

t0 : tensor([[-0.0131, -1.4668, 0.1647, 0.2856], [ 0.7442, -0.8059, 0.3785, -0.6320], [ 1.0198, 1.1876, -1.1679, 0.0637]])

t1 : tensor([[ 0.9938, 0.7138, -1.2564, 0.0882], [ 0.6521, 1.2313, 0.5641, 0.3282], [-0.3884, 1.0358, 0.7508, -0.4457]])

t2 : tensor([[-0.2492, 0.1901, -0.1678, 0.3419], [-0.2414, -0.8395, 0.4291, 0.8404], [ 0.3786, -1.1990, -0.1640, -0.3971]])

ts : tensor([[ -7.9878, 6.0448, 15.1387, 0.8015], [ -4.6586, -3.7393, 3.0079, 0.1490], [ -1.0322, -0.5401, -10.3267, 2.3084]])

-7.9878 = -0.0131 + 2 * 0.9938 / -0.2492

−0.0131+2×0.9938÷−0.2492=−7.989022953451043  , 误差是因为 print t0,..t2 不完整

减法 sub

import torch as t
t0 = t.randint(1,10,size=(3,4))
t1 = t.ones(size=(3,4))
print('t0 :', t0, '\n')
print('t1 :', t1, '\n')
t2 = t.sub(t0,t1,alpha=3)
print('t2 :', t2, '\n')

t0 : tensor([[6, 7, 7, 4],
        [7, 4, 2, 1],
        [3, 5, 7, 8]]) 

t1 : tensor([[1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.]]) 

t2 : tensor([[ 3.,  4.,  4.,  1.],
        [ 4.,  1., -1., -2.],
        [ 0.,  2.,  4.,  5.]]) 

乘法 mul()

import torch as t
t0 = t.randint(1,10,size=(3,4))
t1 = t.randint(1,10,size=(3,4))
print('t0 :', t0, '\n')
print('t1 :', t1, '\n')
t2 = t.mul(t0,t1)
print('t2 :', t2, '\n')

t0 : tensor([[3, 3, 9, 8],
        [2, 4, 7, 8],
        [9, 5, 4, 6]]) 

t1 : tensor([[9, 6, 6, 4],
        [9, 4, 7, 4],
        [7, 1, 8, 8]]) 

t2 : tensor([[27, 18, 54, 32],
        [18, 16, 49, 32],
        [63,  5, 32, 48]]) 

import torch as t
t0 = t.randint(1,10,size=(3,4))
t1 = t.randint(1,10,size=(3,4))
print('t0 :', t0, '\n')
print('t1 :', t1, '\n')
t2 = t.mul(t0,3)
print('t2 :', t2, '\n')

t0 : tensor([[6, 5, 9, 1], [2, 8, 5, 9], [3, 4, 8, 7]])

t1 : tensor([[2, 9, 5, 7], [6, 2, 5, 5], [4, 1, 2, 8]])

t2 : tensor([[18, 15, 27, 3], [ 6, 24, 15, 27], [ 9, 12, 24, 21]])

除法 div()

import torch as t
t0 = t.randn(size=(3,4),dtype=t.float)
t1 = t.randn(size=(3,4),dtype=t.float)

print('t0 :', t0, '\n')
print('t1 :', t1, '\n')

ts = t.div(t0,t1)
print('ts :', ts, '\n')

t0 : tensor([[-1.6617, -0.5301,  0.5634,  0.1159],
        [-1.3822, -1.2207, -0.0972,  0.4269],
        [-0.1547, -0.3474, -0.4760, -1.8090]]) 

t1 : tensor([[ 0.2044, -1.5251, -1.4955,  0.0749],
        [ 0.4626,  0.2249,  0.4656, -0.7232],
        [-1.3094, -1.6005, -0.4334, -0.3464]]) 

ts : tensor([[-8.1284,  0.3476, -0.3767,  1.5480],
        [-2.9878, -5.4288, -0.2088, -0.5904],
        [ 0.1181,  0.2171,  1.0982,  5.2230]]) 

3.2 数学函数

import torch as t
t0 = t.randn(size=(1,3),dtype=t.float)
print('t0 :', t0, '\n')
ts = t.log(t0)
print('log :', ts, '\n')
ts = t.log10(t0)
print('log10 :', ts, '\n')
ts = t.log2(t0)
print('log2 :', ts, '\n')
ts = t.exp(t0)
print('exp :', ts, '\n')
ts = t.abs(t0)
print('abs :', ts, '\n')
ts = t.pow(2,t0) # 2 的次方
print('pow :', ts, '\n')
ts = t.cos(t0)
print('cos :', ts, '\n')
ts = t.sin(t0)
print('sin :', ts, '\n')
ts = t.tanh(t0)
print('tanh :', ts, '\n')

t0 : tensor([[-0.6627,  0.5164,  1.3497]]) 

log : tensor([[    nan, -0.6610,  0.2999]]) 

log10 : tensor([[    nan, -0.2871,  0.1302]]) 

log2 : tensor([[    nan, -0.9536,  0.4326]]) 

exp : tensor([[0.5155, 1.6759, 3.8562]]) 

abs : tensor([[0.6627, 0.5164, 1.3497]]) 

pow : tensor([[0.6317, 1.4303, 2.5485]]) 

cos : tensor([[0.7883, 0.8696, 0.2193]]) 

sin : tensor([[-0.6153,  0.4937,  0.9757]]) 

tanh : tensor([[-0.5802,  0.4749,  0.8740]]) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值