[PyTroch系列-7]:PyTorch基础 - 张量的算术运算

本文详细介绍了PyTorch中的张量运算,包括加法、减法、乘法、除法以及倒数和幂运算,并探讨了张量的广播机制。通过实例展示了各种算术运算的使用方法,帮助读者理解如何在PyTorch中进行基本的数学操作。
摘要由CSDN通过智能技术生成

作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/119428023


目录

 第1章 Tensor运算概述

1.1 概述

1.3  “in place“运算 

1.4 Tensor的广播机制: 不同维度的tensor实例运算

1.5 环境准备

1.6 算术运算概述:加、减、系数乘、系数除

第2章 加法运算:add

第3章 减法运算:subtract

第4章 乘法运算:multiply

第5章除法运算:divide

第6章 倒数运算:reciprocal()

第7章 幂运算:power()

第8章 广播机制




 第1章 Tensor运算概述

1.1 概述

PyTorch提供了大量的张量运算,基本上可以对标Numpy多维数组的运算,以支持对张量的各种复杂的运算。

这些操作运算中大多是对数组中每个元素执行相同的函数运算,并获得每个元素函数运算的结果序列,这些序列生成一个新的同维度的数组。

https://pytorch.org/docs/master/torch.html

 1.2 运算分类

(1)算术运算:加、减、系数乘、系数除

(2)函数运算:sin,cos

(3)取整运算:上取整、下取整

(4)统计运算:最大值、最小值、均值

(5)线性代数运算

1.3  “in place“运算 

“in place“运算不是某个特定的函数运算,而是每个函数都有自己的“in place“运算的版本。

xxx_():执行完该操作,直接修改tensor自身的值。

基本上,每个函数都有自己的in place版本。

torch.cos() =》torch.cos_()

torch.floor() =》torch.floor_()

1.4 Tensor的广播机制: 不同维度的tensor实例运算

1.5 环境准备

import numpy as np
import torch
 
print("Hello World")
print(torch.__version__)
print(torch.cuda.is_available())

1.6 算术运算概述:加、减、系数乘、系数除

PyTorch算术函数包含简单的加减乘除运算add()subtract()multiply() 和 divide()

算术运算后得到的结果依然是是相同维度的数组。

第2章 加法运算:add

#代码实例
a = torch.arange(9)
print ('原数据a:')
print (a)
print ('\n')

b = torch.arange(9)
print ('原数据b:')
print (b)
print ('\n')

print ('运算后数据:')
print (a+b)
print (torch.add(a,b))
print (a.add(b))
print ('\n')

print (a)
print ('\n')
输出结果为:

原数据a:
tensor([0, 1, 2, 3, 4, 5, 6, 7, 8])


原数据b:
tensor([0, 1, 2, 3, 4, 5, 6, 7, 8])


运算后数据:
tensor([ 0,  2,  4,  6,  8, 10, 12, 14, 16])
tensor([ 0,  2,  4,  6,  8, 10, 12, 14, 16])
tensor([ 0,  2,  4,  6,  8, 10, 12, 14, 16])


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

第3章 减法运算:subtract

#代码实例

a = torch.arange(1,10)
print ('原数据a:')
print (a)
print ('\n')

b = torch.arange(0,9)
print ('原数据b:')
print (b)
print ('\n')

print ('运算后数据:')
print (a-b)
print (torch.sub(a,b))
print (a.sub(b))
print ('\n')

print (a)
print ('\n')
#输出结果

原数据a:
tensor([1, 2, 3, 4, 5, 6, 7, 8, 9])


原数据b:
tensor([0, 1, 2, 3, 4, 5, 6, 7, 8])


运算后数据:
tensor([1, 1, 1, 1, 1, 1, 1, 1, 1])
tensor([1, 1, 1, 1, 1, 1, 1, 1, 1])
tensor([1, 1, 1, 1, 1, 1, 1, 1, 1])


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

第4章 乘法运算:multiply

#代码实例

a = torch.Tensor([2,4,6,8,10,12])
print ('原数据a:')
print (a)
print ('\n')

b = torch.Tensor([2,4,6,8,10,12])
print ('原数据b:')
print (b)
print ('\n')

print ('运算后数据:')
print (a*b)
print (torch.multiply(a,b))
print (a.multiply(b))
print ('\n')

print (a)
print ('\n')
#输出结果

原数据a:
tensor([ 2.,  4.,  6.,  8., 10., 12.])


原数据b:
tensor([ 2.,  4.,  6.,  8., 10., 12.])


运算后数据:
tensor([  4.,  16.,  36.,  64., 100., 144.])
tensor([  4.,  16.,  36.,  64., 100., 144.])
tensor([  4.,  16.,  36.,  64., 100., 144.])


tensor([ 2.,  4.,  6.,  8., 10., 12.])

第5章除法运算:divide

#代码实例

a = torch.Tensor([2,4,6,8,10,12])
print ('原数据a:')
print (a)
print ('\n')

b = torch.Tensor([2,4,6,8,10,12])
print ('原数据b:')
print (b)
print ('\n')

print ('运算后数据:')
print (a/b)
print (torch.div(a,b))
print (a.div(b))
print ('\n')

print (a)
print ('\n')

#输出结果

原数据a:
tensor([ 2.,  4.,  6.,  8., 10., 12.])


原数据b:
tensor([ 2.,  4.,  6.,  8., 10., 12.])


运算后数据:
tensor([1., 1., 1., 1., 1., 1.])
tensor([1., 1., 1., 1., 1., 1.])
tensor([1., 1., 1., 1., 1., 1.])


tensor([ 2.,  4.,  6.,  8., 10., 12.])

第6章 倒数运算:reciprocal()

reciprocal() 函数返回参数逐元素的倒数。如 1/4 倒数为 4/1

#实例

a = torch.Tensor([2,4,5,8,10,20])
print("原数据a")
print(a)

#导数运算
print("运算数据")
print(1/a)
print(torch.reciprocal(a))
print(a.reciprocal())

print("原数据")
print (a)
#输出结果为:

原数据
tensor([ 2.,  4.,  5.,  8., 10., 20.])
倒数数据
tensor([0.5000, 0.2500, 0.2000, 0.1250, 0.1000, 0.0500])
tensor([0.5000, 0.2500, 0.2000, 0.1250, 0.1000, 0.0500])
tensor([0.5000, 0.2500, 0.2000, 0.1250, 0.1000, 0.0500])
原数据
tensor([ 2.,  4.,  5.,  8., 10., 20.])

第7章 幂运算:power()

power() 函数将第一个输入数组中的元素作为底数,计算它与第二个输入数组中相应元素的

#实例

a = torch.Tensor([10,10,10,10,10])
b = torch.Tensor([1,2,3,4,5])
print("原数据a")
print(a)
print("原数据b")
print(b)

#导数运算
print("运算后数据")
#print(a^b)
print(torch.pow(a,b))
print(a.pow(b))

print("原数据a")
print (a)
#输出结果为:

原数据a
tensor([10., 10., 10., 10., 10.])
原数据b
tensor([1., 2., 3., 4., 5.])
运算后数据
tensor([1.0000e+01, 1.0000e+02, 1.0000e+03, 1.0000e+04, 1.0000e+05])
tensor([1.0000e+01, 1.0000e+02, 1.0000e+03, 1.0000e+04, 1.0000e+05])
原数据a
tensor([10., 10., 10., 10., 10.])

第8章 广播机制

当两个张量的维度不同,对他们进行运算时,需要对维度小的张量进行扩展,扩展成高纬度的张量,这个扩展的过程采用的是广播机制,即对低维度数据进行广播式(拷贝)扩展。

a = torch.arange(9).reshape(3,3)
print ('第一个数组:')
print (a)
print ('\n')

print ('第二个数组:')
b = np.array([10,10,10])  
print (b)
print ('\n')

print ('两个数组相加:')
print (np.add(a,b))
print ('\n')
输出结果:

第一个数组:
tensor([[0, 1, 2],
        [3, 4, 5],
        [6, 7, 8]])


第二个数组:
[10 10 10]


两个数组相加:
tensor([[10, 11, 12],
        [13, 14, 15],
        [16, 17, 18]])

作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/119428023

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文火冰糖的硅基工坊

你的鼓励是我前进的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值