卡卡编程网

专注编程技术分享,涵盖开发教程与实战案例

深度学习框架编程:如何完成张量的初等运算(pytorch)

专栏推荐



正文

相加+或者add

import torch

import numpy as np

a=torch.rand(16,3,28,28)

b=torch.rand(1,3,28,28)

print(a+b)


import torch

import numpy as np

a=torch.rand(16,3,28,28)

b=torch.rand(1,3,28,28)

print(torch.add(a,b))


相减sub -

相乘mul * 对位相乘

除div /


矩阵的真实相乘

torch.matmul

以上是2维矩阵相乘,高维矩阵相乘是这样的:

这是四维矩阵的相乘,需要注意的是,即使是四维矩阵相乘,其实质也是最后两个维度相乘,也就是(4,784)*(784,8)=(4,8),而前面两个维度不动,注意前两个维度必须要一样

转置

转置

二维的t()

高维的transpose

在pytorch中参数w的维度是(输出维度,输入维度)

也就是说输入x*w的转置=输出维度

这个表示将全连接层的4*784的输入降维到4*512,那么需要一个参数矩阵

(4,784)*(784,512)=(4,512)

那么参数矩阵就是(784,512),但是有一点需要注意pytorch中参数矩阵w的输入维度和输出维度相反,也就是w我们定义为(512们84),所以需要转置

次方:

import torch

import numpy as np

a= torch.full([3,3],3)

print(a.pow(2))

print(a**2)

print(a**(0.5))

print(a.sqrt())

print(a.rsqrt())


torch.full([3,3],3)表示建立一个3*3的矩阵,元素全是3

a.pow(2)表示对a进行2次方等价于a**2

a**(0.5)表示对a进行开根号等价于a.sqrt()

rsqrt表示对a进行开根号并求倒数


e次方根

import torch

import numpy as np

a=torch.exp(torch.ones(2,2))


取以e为底的对数

import torch

import numpy as np

a=torch.exp(torch.ones(2,2))

print(torch.log(a))

取以2为底的log2,取以10为底的log10


import torch

import numpy as np

a=torch.tensor(3.14)

print(a.floor()) 向下取整

print(a.ceil()) 向上取整

print(a.trunc())获取a的整数部分

print(a.frac())获取a的小数部分

print(a.round())四舍五入



逐元素操作,此类操作的输入与输出形状一致

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言