pytorch基础知识八【基本数学运算】

1. 加减乘除

a = torch.tensor([[1,2,3],[4,5,6],[7,8,9]])
print(a)
b = torch.tensor([[10,20,30],[40,50,60],[70,80,90]])
# 加法
print(a+b)
print(torch.add(a,b))

# 减法
print(torch.all(torch.eq(a-b,torch.sub(a,b))))

# 乘法
print(torch.all(torch.eq(a*b,torch.mul(a,b))))

# 除法
print(torch.all(torch.eq(a/b,torch.div(a,b))))


执行结果:
	tensor([[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]])
	tensor([[11, 22, 33],
	        [44, 55, 66],
	        [77, 88, 99]])
	tensor([[11, 22, 33],
	        [44, 55, 66],
	        [77, 88, 99]])
	tensor(True)
	tensor(True)
	tensor(True)


在这里插入图片描述

2. 矩阵乘法

在这里插入图片描述
在这里插入图片描述
举例:
在这里插入图片描述
在这里插入图片描述

3. 开方

【1】普通的乘方、开方运算
在这里插入图片描述

aa.rsqrt()  表示先对aa开平方,然后对开平方的结果求倒数
pow(aa,0.5) 表示开平方运算

在这里插入图片描述
【2】自然数e的乘方、对数运算

exp(n) 表示:e的n次方
log(a) 表示:ln(a)
log2() 、 log10()

In[18]: a = torch.exp(torch.ones(2,2))
In[19]: a
Out[19]: 
tensor([[2.7183, 2.7183],
        [2.7183, 2.7183]])

In[20]: torch.log(a)
Out[20]: 
tensor([[1., 1.],
        [1., 1.]])

In[22]: torch.log2(a)
Out[22]: 
tensor([[1.4427, 1.4427],
        [1.4427, 1.4427]])

In[23]: torch.log10(a)
Out[23]: 
tensor([[0.4343, 0.4343],
        [0.4343, 0.4343]])

4. 近似运算

【1】取整、四舍五入、裁剪

floor、ceil 向下取整、向上取整
round 45入
trunc、frac 裁剪


In[24]: a = torch.tensor(3.14)
In[25]: a.floor(),a.ceil(),a.trunc(),a.frac()
Out[25]: (tensor(3.), tensor(4.), tensor(3.), tensor(0.1400))

In[26]: a = torch.tensor(3.499)
In[27]: a.round()
Out[27]: tensor(3.)

In[28]: a = torch.tensor(3.5)
In[29]: a.round()
Out[29]: tensor(4.)

【2】clamp

		torch.clamp(input, min, max, out=None) → Tensor
			将输入input张量每个元素的夹紧到区间 [min,max][min,max],
			并返回结果到一个新张量。

操作定义如下:
		      | min, if x_i < min
		y_i = | x_i, if min <= x_i <= max
      		  | max, if x_i > max
		
	(1) gradient clipping 梯度裁剪
	(2) (min) 小于min的都变为某某值
	(3) (min, max) 不在这个区间的都变为某某值
	(4) 梯度爆炸:一般来说,当梯度达到100左右的时候,就已经很大了,正常在10左右,通过打印梯度的模来查看 w.grad.norm(2)
	(5) 对于w的限制叫做weight clipping,对于weight gradient clipping称为 gradient clipping。



In[30]: grad = torch.rand(2,3)*15

In[31]: grad.max()
Out[31]: tensor(10.6977)

In[32]: grad
Out[32]: 
tensor([[ 6.7738, 10.6977,  4.4314],
        [ 7.8088,  4.8236,  3.6213]])

In[33]: grad.clamp(10)		# 小于10的都变为10
Out[33]: 
tensor([[10.0000, 10.6977, 10.0000],
        [10.0000, 10.0000, 10.0000]])


In[34]: grad.clamp(0,10)   # 不在(0,10)区间的都变为10
Out[34]: 
tensor([[ 6.7738, 10.0000,  4.4314],
        [ 7.8088,  4.8236,  3.6213]])
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《龙良曲PyTorch入门课件》是一份介绍PyTorch深度学习框架的学习资料。PyTorch是一个流行且功能强大的深度学习框架,它提供了易于使用的工具和库来构建、训练和部署神经网络模型。 这份课件通过清晰的结构和简洁明了的内容,帮助初学者快速入门PyTorch。课件内容主要包括以下几个方面: 1. PyTorch基础知识:介绍了PyTorch基本概念、数据结构和操作。学习者将了解如何创建张量(Tensor)、利用张量进行数学运算和变换操作,以及如何利用PyTorch的自动求导功能进行反向传播和优化算法。 2. 模型构建与训练:介绍了如何使用PyTorch构建神经网络模型,包括搭建网络结构、定义损失函数和选择优化算法等。学习者将学会如何使用PyTorch的模型类、损失函数和优化器等工具,以及如何利用数据集进行模型训练和评估。 3. 模型部署与应用:介绍了如何将训练好的模型部署到实际应用中。学习者将了解如何保存和加载模型、如何使用模型进行预测和推理,以及如何对模型进行优化和调试。 这份课件结合了理论和实践,通过大量的示例代码和实际案例,帮助学习者更好地理解和应用PyTorch。它适用于各个层次的学习者,无论是初学者还是有一定经验的开发者都可以从中受益。 总之,龙良曲PyTorch入门课件提供了一个系统而全面的学习路径,帮助学习者快速入门PyTorch,掌握深度学习的基本原理和实践技巧,并能够应用PyTorch进行模型构建、训练和部署。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值