首页 > 编程语言 >Python中PyTorch详解

Python中PyTorch详解

时间:2024-12-14 23:01:07浏览次数:4  
标签:nn Python torch 张量 求导 PyTorch 详解 print

文章目录

Python中PyTorch详解

在这里插入图片描述

一、引言

PyTorch是一个开源的机器学习库,广泛用于计算机视觉和自然语言处理领域。它由Facebook的AI研究团队开发,并且得到了社区的广泛支持。PyTorch以其易用性、灵活性和强大的功能而闻名,特别适合于研究和开发深度学习模型。

二、PyTorch核心概念

在这里插入图片描述

1、张量(Tensor)

PyTorch中的张量与NumPy中的ndarray类似,但可以在GPU上运行,从而加速计算。张量是PyTorch中的基本数据结构,支持多维数组的表示和操作。

1.1、创建张量
import torch

# 创建一个2x3的张量,填充随机数
x = torch.randn(2, 3)
print(x)
1.2、张量操作

PyTorch提供了丰富的张量操作函数,例如逐元素相乘、求和、索引和最大值等。

# 逐元素相乘
a = torch.tensor([[-0.1460, -0.3490, 0.3705], [-1.1141, 0.7661, 1.0823]])
b = torch.tensor([[0.6901, -0.9663, 0.3634], [-0.6538, -0.3728, -1.1323]])
c = a * b
print("a 和 b 的逐元素乘积:\n", c)

# 计算张量a所有元素的总和
print("张量 a 所有元素的总和:\n", a.sum())

# 获取张量a中的最大值
print("张量 a 中的最大值:\n", a.max())

2、自动求导(Autograd)

PyTorch的自动求导机制是构建神经网络的核心。它允许我们定义计算图,并自动计算梯度,这对于训练深度学习模型至关重要。

2.1、自动求导示例
# 定义一个简单的计算图
x = torch.tensor([1.0, 2.0, 3.0], requires_grad=True)
y = x * x * 3.0

# 计算y关于x的导数
y.sum().backward()
print(x.grad)

三、构建神经网络

1、使用nn模块

PyTorch提供了nn模块,用于构建和管理神经网络层。通过继承nn.Module类,我们可以定义自己的网络结构。

import torch.nn as nn

# 定义一个简单的线性网络
class SimpleNet(nn.Module):
    def __init__(self):
        super(SimpleNet, self).__init__()
        self.fc1 = nn.Linear(10, 5)

    def forward(self, x):
        x = self.fc1(x)
        return x

# 实例化网络并应用
net = SimpleNet()
print(net(torch.randn(1, 10)))

2、优化器(Optimizer)

训练神经网络时,我们需要更新模型的权重。PyTorch的optim模块提供了多种优化算法,如SGD、Adam等。

import torch.optim as optim

# 定义优化器
optimizer = optim.SGD(net.parameters(), lr=0.01)

# 训练过程中更新权重
optimizer.zero_grad()
loss.backward()
optimizer.step()

四、使用示例

1、数据加载和处理

在PyTorch中,我们可以使用DataLoader来批量加载数据,并支持打乱顺序和多线程加载。

from torch.utils.data import DataLoader, TensorDataset

# 创建数据集和数据加载器
dataset = TensorDataset(torch.randn(100, 10), torch.randn(100, 1))
dataloader = DataLoader(dataset, batch_size=10, shuffle=True)

# 遍历数据加载器
for X, y in dataloader:
    print(f"shape of X [N,C,H,W]: {X.shape}")
    print(f"shape of y: {y.shape} {y.dtype}")
    break

五、总结

PyTorch是一个功能强大的深度学习框架,它提供了张量计算、自动求导和神经网络构建等核心功能。通过灵活的API和丰富的社区资源,PyTorch使得研究和开发深度学习模型变得更加容易。


版权声明:本博客内容为原创,转载请保留原文链接及作者信息。

参考文章

标签:nn,Python,torch,张量,求导,PyTorch,详解,print
From: https://blog.csdn.net/NiNg_1_234/article/details/144478074

相关文章

  • JVM 栈帧结构详解
    在Java虚拟机(JVM)中,栈帧(StackFrame)是用于支持方法调用和方法执行的关键数据结构。每个方法从调用开始到执行完成,都对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。本文将详细介绍JVM栈帧的结构及其组成部分。1栈帧的组成每个栈帧包含以下几个主要部分:局部变量表(Loc......
  • 【网络】传输层协议UDP/TCP&&网络层IP&&数据链路层MAC&&NAT详解
    主页:醋溜马桶圈-CSDN博客专栏:计算机网络原理_醋溜马桶圈的博客-CSDN博客gitee:mnxcc(mnxcc)-Gitee.com目录1.传输层协议UDP1.1传输层1.2端口号1.3UDP协议1.3.1UDP协议端格式1.3.2 UDP的特点1.3.3 面向数据报1.3.4UDP的缓冲区1.3.5UDP使用注意事......
  • IPVS(LVS)中的调度算法详解(一)
    一、IPVS中的算法类型IPVirtualServerversion1.2.1kernel6.6.0-28.0.0.34.oe2403.x86_64--scheduler-sscheduleroneofrr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq|fo|ovf|mh,当前版本的LVS共有rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq|fo|ovf|mh,共13种算法......
  • 【软件工程】第三章·计划和管理项目(详解活动图计算关键路径、最早开始时间、最晚开始
    ......
  • 最短路----Dijkstra算法详解
    简介迪杰斯特拉(Dijkstra)算法是一种用于在加权图中找到单个源点到所有其他顶点的最短路径的算法。它是由荷兰计算机科学家艾兹格·迪科斯彻(EdsgerDijkstra)在1956年提出的。Dijkstra算法适用于处理带有非负权重的图。迪杰斯特拉算法主要特点是从起始点开始,采用贪心算法,每次遍历......
  • Python基础18--异常处理
    1、了解异常当检测到一个错误时,解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的"异常"。2、异常处理1、语法try:可能发生错误的代码except:如果出现异常执行的代码2、实例:'''需求:尝试以r模式打开文件,如果文件不存在,则以w方式打开。'''try:......
  • 十六、操作符详解(1)
    一、算术操作符+  -  *  /  %/,两个操作数至少有一个为浮点数,结果才能为浮点数,保留小数部分结果。%,操作符必须都为整数,且结果也为整数。二、移(二进制补码位)位操作符<<左移                     >>右移对于移位操作符,不能移......
  • Python Programming
    CALCULUS(MA1CANU)PythonProgrammingAssignment Thisassignmentcountsfor20%ofthetotalmarksofthismodule.FullmarksforthisassignmentcanbegainedfromcompleteanswerstoALLquestionsandsubmittingthePythonscript.pyforeachquestions......
  • 近期做到的有点绕的RSA题目详解(重点:e和phi不互素)
    标题简述:内容是第一遍学,不扎实,遇到一些题目还是无法下手或者有思路有误等等ctfshow1.funnyrsa1e1=14606334023791426p1=1210097727354602353649406229894338076192119260154940874536747476143312950400636797224222982865494936981506906949651061038223153784619701......
  • 深入详解机器学习基础中的模型评估方法
    引言        机器学习正在快速改变我们的世界,从自动驾驶汽车到个性化推荐系统,其应用无处不在。然而,一个成功的机器学习项目不仅依赖于强大的算法和丰富的数据,还需要精确的模型评估方法。模型评估是机器学习过程中不可或缺的环节,它通过衡量模型对新数据的预测能力,来指......