河北沧州网站建设,卫浴建材网站建设,企业内网网站,平台公司转型发展思路PyTorch
PyTorch 是一个开源的机器学习库#xff0c;广泛用于计算机视觉和自然语言处理等应用。它由 Facebook 的人工智能研究团队开发#xff0c;并得到了许多研究机构和企业的支持。PyTorch 以其易用性、灵活性和强大的社区支持而受到欢迎。一些特点如下#xff1a; 动态…PyTorch
PyTorch 是一个开源的机器学习库广泛用于计算机视觉和自然语言处理等应用。它由 Facebook 的人工智能研究团队开发并得到了许多研究机构和企业的支持。PyTorch 以其易用性、灵活性和强大的社区支持而受到欢迎。一些特点如下 动态计算图Dynamic Computation GraphsPyTorch 使用动态计算图这意味着图在运行时构建允许更直观和灵活的模型设计。这与传统的静态图框架如 TensorFlow 1.x不同后者需要在执行前定义整个图。 自动微分Automatic DifferentiationPyTorch 提供了自动微分功能可以自动计算梯度这对于训练深度学习模型至关重要。 丰富的APIPyTorch 提供了大量的预定义层、优化器和损失函数使得模型的构建和训练变得简单。 多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_size2)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_meantorch.zeros(10), running_vartorch.ones(10))print(output.shape) # 输出张量的形状Dropout 函数示例
# 使用 F.dropout 进行dropout操作正则化技术Dropout 通过在训练过程中随机“丢弃”即将输出设置为零
# 一部分神经元的输出来减少神经元之间复杂的共适应关系。
dropped F.dropout(input, p0.2)print(dropped.shape) # 输出张量的形状相关源码
GitHub地址https://github.com/pytorch/pytorch/blob/main/torch/nn/functional.py