[PyTroch系列-10]:PyTorch基础 - 张量元素的比较运算

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

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


目录

第1章 Tensor运算概述

1.1 概述

1.3  “in place“运算 

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

1.5 环境准备

1.6 比较运算概述

第2章 常规值的比较示例

2.1 equal:比较两个tensor是否完全相同

2.2 eq:比较两个tensor的每个元素是否相等关系

2.3 gt:比较两个tensor的每个元素是否为大于关系

第3章 非常规值(isxxx)的比较示例

3.1 isfinite:是否为有界限的数值

3.2 isinf:是否为无界限的数值或无穷值,如1/0就是无限值

3.3 isnan:检测张量元素是否为NAN(空数据)


第1章 Tensor运算概述

1.1 概述

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

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

https://www.runoob.com/numpy/numpy-linear-algebra.html

1.2 运算分类

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

(2)函数运算:sin,cos

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

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

(5)比较运算:大于,等于,小于

(6)线性代数运算:矩阵、点乘、叉乘

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 比较运算概述

(1)概述

  • 张量比较是指张量的每个元素的的比较
  • 比较的对象,可以是两个张量之间的对应元素的比较
  • 比较的对象,可以是一个张量中的所有元素与0、指定元素、无效值NA或无穷值进行比较
  • 比较的结果是只包含true和false的张量。

(2)与常规值的比较

备注:

  • other是比较对象,可以是张量,可以是数字,默认是0
  • 比较的结果是只包含true和false的张量。

关键词说明:

  • ge; greater and equal,  大于等于
  • gt: greater than, 大于
  • le: less and equal,小于等于
  • lt:  less than,小于
  • ne: not equal,不等于
  • equal与上述几个不同,equal是比较两个张量整体是否完全相同,返回一个true或false。

(3)与非常规值的比较

备注:

isfinite:是否为有界限的数值,

isinf:是否为无界限的数值或无穷值

  • 正数/0 =》正无穷,用inf表示
  • 附属/0 =》 负无穷,用-inf表示

isnan:检测张量元素是否为nan(空数据),返回true or flase;

  • 无效数据
  • 非数字数据,
  • 0/0
  • 读取外部数据时,无输入数据

isnormal:检测张量元素是否为有效数据。

第2章 常规值的比较示例

常规值的比较,不同运算符的比较方法比较类似,这里选出几个进行示意。

2.1 equal:比较两个tensor是否完全相同

# 比较两个tensor是否完全相同
a = torch.Tensor([[1,2,3],[4,5,6]])  
print ("原数据a:")
print (a)

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

c = torch.Tensor([[0,2,3],[0,5,6]])  
print ("原数据c:")
print (a)
print ('\n')

print ("a与b比较:")
print(torch.equal(a,b))
print ("a与c比较:")
print(torch.equal(a,c))
输出:

原数据a:
tensor([[1., 2., 3.],
        [4., 5., 6.]])
原数据b:
tensor([[1., 2., 3.],
        [4., 5., 6.]])
原数据c:
tensor([[1., 2., 3.],
        [4., 5., 6.]])

2.2 eq:比较两个tensor的每个元素是否相等关系

# 比较两个tensro之间的每个元素
a = torch.Tensor([[1,2,3],[4,5,6]])  
print ("原数据a:")
print (a)


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


c = torch.Tensor([[0,2,3],[0,5,6]])  
print ("原数据c:")
print (a)
print ('\n')

print ("a与b比较:")
print(torch.eq(a,b))
print ("a与c比较:")
print(torch.eq(a,c))
输出:

原数据a:
tensor([[1., 2., 3.],
        [4., 5., 6.]])
原数据b:
tensor([[1., 2., 3.],
        [4., 5., 6.]])
原数据c:
tensor([[1., 2., 3.],
        [4., 5., 6.]])


a与b比较:
tensor([[True, True, True],
        [True, True, True]])
a与c比较:
tensor([[False,  True,  True],
        [False,  True,  True]])

2.3 gt:比较两个tensor的每个元素是否为大于关系

# 比较两个tensro之间的每个元素
a = torch.Tensor([[1,2,3],[4,5,6]])  
print ("原数据a:")
print (a)


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


c = torch.Tensor([[0,2,3],[0,5,6]])  
print ("原数据c:")
print (a)
print ('\n')

print ("a与b比较:")
print(torch.gt(a,b))
print ("a与c比较:")
print(torch.gt(a,c))
输出:

原数据a:
tensor([[1., 2., 3.],
        [4., 5., 6.]])
原数据b:
tensor([[1., 2., 3.],
        [4., 5., 6.]])
原数据c:
tensor([[1., 2., 3.],
        [4., 5., 6.]])


a与b比较:
tensor([[False, False, False],
        [False, False, False]])
a与c比较:
tensor([[ True, False, False],
        [ True, False, False]])

第3章 非常规值(isxxx)的比较示例

3.1 isfinite:是否为有界限的数值

# 比较tensor的每个元素是否为无穷数据
a = torch.Tensor([0,1,2,3,4,5,6,7,8,9])  
print ("原数据a:")
print (a)

print ("原数据b:")
b = a/0
print(b)

print ("原数据b:")
c = -a/0
print(c)

print("比较结果")
print(torch.isfinite(a))
print(torch.isfinite(b))
print(torch.isfinite(b))
输出:

原数据a:
tensor([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])
原数据b:
tensor([nan, inf, inf, inf, inf, inf, inf, inf, inf, inf])
原数据b:
tensor([nan, -inf, -inf, -inf, -inf, -inf, -inf, -inf, -inf, -inf])

是否是有限数据
tensor([True, True, True, True, True, True, True, True, True, True])
tensor([False, False, False, False, False, False, False, False, False, False])
tensor([False, False, False, False, False, False, False, False, False, False])

备注:

  • 0/0为nan数据
  • inf为正无穷
  • -inf为负无穷
  • nan不是正无穷,也不是负无穷

3.2 isinf:是否为无界限的数值或无穷值,如1/0就是无限值

# 比较tensor的每个元素是否为有限数据
a = torch.Tensor([0,1,2,3,4,5,6,7,8,9])  
print ("原数据a:")
print (a)

print ("原数据b:")
b = a/0
print(b)

print ("原数据b:")
c = -a/0
print(c)

print("比较结果")
print(torch.isinf(a))
print(torch.isinf(b))
print(torch.isinf(b))

输出:

原数据a:
tensor([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])
原数据b:
tensor([nan, inf, inf, inf, inf, inf, inf, inf, inf, inf])
原数据b:
tensor([nan, -inf, -inf, -inf, -inf, -inf, -inf, -inf, -inf, -inf])
是否是有限数据
tensor([False, False, False, False, False, False, False, False, False, False])
tensor([False,  True,  True,  True,  True,  True,  True,  True,  True,  True])
tensor([False,  True,  True,  True,  True,  True,  True,  True,  True,  True])

备注:

  • nas既不是有限数据,也不是无限数据。

3.3 isnan:检测张量元素是否为NAN(空数据)

#  比较tensor的每个元素是否为NAN
a = torch.Tensor([0,1,2,3,4,5,6,7,8,9])  
print ("原数据a:")
print (a)

print ("原数据b:")
b = a/0
print(b)

print ("原数据b:")
c = -a/0
print(c)

print("比较结果")
print(torch.isnan(a))
print(torch.isnan(b))
print(torch.isnan(b))

输出 :

原数据a:
tensor([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])
原数据b:
tensor([nan, inf, inf, inf, inf, inf, inf, inf, inf, inf])
原数据b:
tensor([nan, -inf, -inf, -inf, -inf, -inf, -inf, -inf, -inf, -inf])
比较结果
tensor([False, False, False, False, False, False, False, False, False, False])
tensor([ True, False, False, False, False, False, False, False, False, False])
tensor([ True, False, False, False, False, False, False, False, False, False])

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

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

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
PyTorch提供了丰富的张量算术运算,可以对张量进行各种复杂的运算。你可以使用PyTorch的算术函数来执行加法、减法、乘法和除法操作。例如,你可以使用add()函数执行张量的加法运算,subtract()函数执行减法运算,multiply()函数执行乘法运算,divide()函数执行除法运算。 此外,PyTorch还支持复杂数的算术运算,通过安装"pytorch-complex-tensor"库,你可以使用该库提供的ComplexTensor类来进行复杂数的模拟算术运算,该库支持渐变。你可以使用ComplexTensor类来创建初始张量,并在其执行复杂的算术运算。 下面是一个使用PyTorch进行张量算术运算的例子: ``` import torch # 创建两个张量 a = torch.tensor([1, 2, 3]) b = torch.tensor([4, 5, 6]) # 执行加法运算 c = torch.add(a, b) # 执行减法运算 d = torch.subtract(a, b) # 执行乘法运算 e = torch.multiply(a, b) # 执行除法运算 f = torch.divide(a, b) # 输出结果 print(c) # tensor([5, 7, 9]) print(d) # tensor([-3, -3, -3]) print(e) # tensor([4, 10, 18]) print(f) # tensor([0.25, 0.4, 0.5]) ``` 通过使用PyTorch张量算术运算,你可以对张量进行各种复杂的运算,并得到所需的结果。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [[PyTroch系列-7]:PyTorch基础 - 张量的算术运算](https://blog.csdn.net/HiWangWenBing/article/details/119428023)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [pytorch-complex-tensor:Pytorch的非官方复张量和标量支持](https://download.csdn.net/download/weixin_42128537/18698908)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

文火冰糖的硅基工坊

你的鼓励是我前进的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值