淘宝网站推广策略网站文章上传时间
PyTorch
PyTorch 是一个开源的机器学习库,广泛用于计算机视觉和自然语言处理等应用。它由 Facebook 的人工智能研究团队开发,并得到了许多研究机构和企业的支持。PyTorch 以其易用性、灵活性和强大的社区支持而受到欢迎。一些特点如下:
-  
动态计算图(Dynamic Computation Graphs):PyTorch 使用动态计算图,这意味着图在运行时构建,允许更直观和灵活的模型设计。这与传统的静态图框架(如 TensorFlow 1.x)不同,后者需要在执行前定义整个图。
 -  
自动微分(Automatic Differentiation):PyTorch 提供了自动微分功能,可以自动计算梯度,这对于训练深度学习模型至关重要。
 -  
丰富的API:PyTorch 提供了大量的预定义层、优化器和损失函数,使得模型的构建和训练变得简单。
 -  
多GPU支持:PyTorch 支持多GPU训练,可以有效地利用硬件资源,加速模型训练。
 -  
序列化和模型共享:PyTorch 允许轻松地保存和加载模型,便于模型的共享和部署。
 -  
社区支持:PyTorch 拥有一个活跃的社区,提供了大量的教程、文档和预训练模型。
 
functional.py
功能介绍
- 在 PyTorch 中,
torch.nn.functional.py是一个包含多种函数的模块,这些函数提供了不包含可学习参数的层的实现。这意味着,与 torch.nn.Module 中的层不同,torch.nn.functional.py中的函数不跟踪梯度或在训练过程中更新参数。这些函数通常用于执行各种操作,如卷积、池化、激活函数、损失函数等。 
常用函数
-  
卷积函数
torch.nn.functional.conv1d: 一维卷积函数。torch.nn.functional.conv2d: 二维卷积函数。torch.nn.functional.conv3d: 三维卷积函数。torch.nn.functional.conv_transpose1d,torch.nn.functional.conv_transpose2d,torch.nn.functional.conv_transpose3d: 转置卷积(也称为去卷积)函数。
 -  
池化函数
torch.nn.functional.avg_pool1d,torch.nn.functional.avg_pool2d,torch.nn.functional.avg_pool3d: 平均池化函数。torch.nn.functional.max_pool1d,torch.nn.functional.max_pool2d,torch.nn.functional.max_pool3d: 最大池化函数。torch.nn.functional.adaptive_max_pool1d,torch.nn.functional.adaptive_max_pool2d: 自适应最大池化函数。torch.nn.functional.adaptive_avg_pool1d,torch.nn.functional.adaptive_avg_pool2d: 自适应平均池化函数。
 -  
非线性激活函数
torch.nn.functional.relu: 修正线性单元(ReLU)激活函数。torch.nn.functional.sigmoid: Sigmoid 激活函数。torch.nn.functional.tanh: 双曲正切激活函数。
 -  
归一化函数
torch.nn.functional.batch_norm: 批量归一化函数。
 -  
线性函数
torch.nn.functional.linear: 线性变换函数。
 -  
Dropout 函数
torch.nn.functional.dropout: Dropout 函数。
 -  
距离函数
torch.nn.functional.pairwise_distance: 计算两个张量之间的成对距离。
 -  
损失函数
torch.nn.functional.cross_entropy: 交叉熵损失函数。torch.nn.functional.binary_cross_entropy: 二进制交叉熵损失函数。torch.nn.functional.nll_loss: 负对数似然损失函数。
 -  
视觉函数
torch.nn.functional.pixel_shuffle: 用于将张量重新排列以增加空间分辨率的函数。torch.nn.functional.pad: 用于填充张量的函数。
 
使用示例
- 卷积函数示例
 
import torch
import torch.nn.functional as F# 创建一个输入张量,假设是一个单通道的28x28图像
input = torch.randn(1, 1, 28, 28)# 定义卷积核的权重和偏置
weight = torch.randn(1, 1, 3, 3)
bias = torch.randn(1)# 使用 F.conv2d 进行卷积操作
output = F.conv2d(input, weight, bias)print(output.shape)  # 输出张量的形状
 
- 池化函数示例
 
# 使用 F.max_pool2d 进行最大池化,
# 池化(Pooling)是卷积神经网络(CNN)中常用的一种技术,它用于降低特征的空间维度(高和宽),
# 同时保留最重要的信息。池化操作通常在卷积层之后应用,可以减少模型的参数数量和计算量,
# 提高模型的抽象能力,并且有助于提取更具有泛化性的特征。
pooled = F.max_pool2d(input, kernel_size=2)print(pooled.shape)  # 输出张量的形状
 
- 激活函数示例
 
# 使用 F.relu 作为激活函数
activated = F.relu(input)print(activated.shape)  # 输出张量的形状
 
- 损失函数示例
 
# 假设我们有一些预测和目标标签
predictions = torch.randn(10)
targets = torch.tensor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])# 使用 F.cross_entropy 计算交叉熵损失
loss = F.cross_entropy(predictions, targets)print(loss.item())  # 输出损失值
 
- 归一化函数示例
 
# 假设我们有一个批量的输入数据
inputs = torch.randn(20, 10)# 使用 F.batch_norm 进行批量归一化
output = F.batch_norm(inputs, running_mean=torch.zeros(10), running_var=torch.ones(10))print(output.shape)  # 输出张量的形状
 
- Dropout 函数示例
 
# 使用 F.dropout 进行dropout操作,正则化技术,Dropout 通过在训练过程中随机“丢弃”(即将输出设置为零)
# 一部分神经元的输出,来减少神经元之间复杂的共适应关系。
dropped = F.dropout(input, p=0.2)print(dropped.shape)  # 输出张量的形状
 
相关源码
- GitHub地址:https://github.com/pytorch/pytorch/blob/main/torch/nn/functional.py
 
