PyTorch 数学运算

本文介绍了如何利用重载运算符简化加减乘除操作,探讨了矩阵相乘的torch.nn、torch.matmul和@的使用,涵盖了n次方、开方、取整等常见操作,以及梯度计算的技巧,如grad的处理和常见函数如max、median、min。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.加减乘除

重载运算符比add,mul,div,sub好用

2.矩阵相乘

torch.nn(只可用于二维不推荐) 和torch.matmul和@三种

(注:神经网络就是不断矩阵相乘相加的过程)

3.n次方a.pow(n)或a**2表平方

4.开方a.sqrt()

5.平方根的倒数a.rsqrt()

6.a.floor()向下取整 a.ceil()向上取整 a.round()取a的整数部分 a.frac()取a的小数部分

7.grad(和a一样是张量)是梯度grand.max()取张量里面最大的 grad.median()是取张量里面居中的 grad.min()同理 ,grad.clamp(10)是将里面小于10的都替换成10 ,而grad.clamp(0,10)是将里面的数都在零到十之间。

### PyTorch中的数学运算 #### 基本算术运算 PyTorch支持多种基本的算术运算,包括加减乘除以及幂次方根等特殊运算。对于两个相同尺寸的张量可以执行逐元素相加、相减、相乘和相除操作[^1]。 ```python import torch tensor_a = torch.tensor([2.0, 3.0]) tensor_b = torch.tensor([4.0, 5.0]) addition_result = tensor_a + tensor_b subtraction_result = tensor_a - tensor_b multiplication_result = tensor_a * tensor_b division_result = tensor_a / tensor_b power_result = torch.pow(tensor_a, 2) print(f'Addition Result: {addition_result}') print(f'Subtraction Result: {subtraction_result}') print(f'Multiplication Result: {multiplication_result}') print(f'Division Result: {division_result}') print(f'Power Result: {power_result}') # 幂运算示例 ``` #### 高级数学函数 除了简单的四则运算外,还提供了丰富的高级数学功能,比如三角函数(sin, cos)、双曲函数(tanh),以及其他常见的数值处理方法如指数exp()、自然对数log()[^5]。 ```python data = torch.tensor([0., math.pi/2, math.pi/4]) sine_values = torch.sin(data) cosine_values = torch.cos(data) hyperbolic_tangent_values = torch.tanh(data) print(f"Sine Values: {sine_values}") print(f"Cosine Values: {cosine_values}") print(f"Hyperbolic Tangent Values: {hyperbolic_tangent_values}") ``` #### 矩阵乘法 当涉及到线性代数领域内的计算时,`torch.mm()`用于常规矩阵乘法;而`torch.matmul()`或`@`符号可用于更广泛的场景下实现广播机制下的批量矩阵乘法[^4]。 ```python matrix_A = torch.randn(3, 4) matrix_B = torch.randn(4, 2) product_mm = torch.mm(matrix_A, matrix_B) product_matmul = torch.matmul(matrix_A, matrix_B) product_operator = matrix_A @ matrix_B assert (product_mm == product_matmul).all() assert (product_mm == product_operator).all() print(product_mm) ``` #### 统计聚合操作 为了方便数据分析工作流,在PyTorch里也内置了一些统计汇总的功能,像mean(), sum(), max(), min()等等,可以帮助快速获取整个张量或者指定维度上的统计数据. ```python random_tensor = torch.rand((3, 4)) sum_elements = random_tensor.sum(dim=0) # 对每一列求和 maximum_value_per_row = random_tensor.max(dim=1)[0] print(sum_elements) print(maximum_value_per_row) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

懒羊羊和大耳朵图图

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值