跟着AI学AI_09 PyTorch 简介

在这里插入图片描述

PyTorch 简介

PyTorch 是一个开源的深度学习框架,由 Facebook 的人工智能研究团队(FAIR)开发。它提供了灵活且高效的张量计算功能,并支持动态计算图。PyTorch 的易用性和灵活性使其成为深度学习研究和生产应用中广泛使用的工具。

主要特点
  1. 动态计算图

    • PyTorch 使用动态计算图(Dynamic Computation Graph),也称为定义即运行(Define-by-Run)模式。这种方式允许在模型运行时改变计算图结构,提供了很大的灵活性,尤其适用于调试和开发复杂模型。
  2. 强大的张量计算

    • PyTorch 提供类似于 NumPy 的张量操作,但可以在 GPU 上高效运行,极大地提高了计算速度。
  3. 自动求导

    • PyTorch 内置的自动求导(Autograd)机制,可以自动计算张量的梯度,方便进行反向传播。
  4. 模块化和可扩展性

    • PyTorch 提供了丰富的模块和类库,如 torch.nntorch.optimtorch.utils.data 等,便于构建和训练神经网络模型。
  5. 社区和生态系统

    • PyTorch 拥有活跃的开发者社区和丰富的第三方库支持,如 torchvision(用于计算机视觉)、torchaudio(用于音频处理)等。
PyTorch 的基本概念和组件
  1. 张量(Tensor)

    • PyTorch 的核心数据结构是张量,与 NumPy 数组类似,但可以在 GPU 上进行计算。
    import torch# 创建一个张量
    x = torch.tensor([[1, 2], [3, 4]])
    print(x)# 在 GPU 上创建张量
    if torch.cuda.is_available():x = x.to('cuda')print(x)
    
  2. 自动求导(Autograd)

    • PyTorch 的自动求导引擎可以轻松实现反向传播。
    # 创建一个需要求导的张量
    x = torch.tensor(2.0, requires_grad=True)
    y = x**2 + 3*x + 5# 计算梯度
    y.backward()
    print(x.grad)  # 输出 dy/dx
    
  3. 神经网络模块(torch.nn)

    • PyTorch 提供了构建神经网络的基础模块。
    import torch.nn as nn# 定义一个简单的神经网络
    class SimpleNN(nn.Module):def __init__(self):super(SimpleNN, self).__init__()self.fc = nn.Linear(10, 1)def forward(self, x):return self.fc(x)model = SimpleNN()
    
  4. 优化器(torch.optim)

    • PyTorch 提供了多种优化算法,如 SGD、Adam 等。
    optimizer = torch.optim.SGD(model.parameters(), lr=0.01)# 在训练循环中使用优化器
    for epoch in range(100):optimizer.zero_grad()  # 清零梯度output = model(input)  # 前向传播loss = loss_fn(output, target)  # 计算损失loss.backward()  # 反向传播optimizer.step()  # 更新参数
    
  5. 数据加载(torch.utils.data)

    • PyTorch 提供了灵活的数据加载和预处理工具。
    from torch.utils.data import DataLoader, Datasetclass CustomDataset(Dataset):def __init__(self, data, labels):self.data = dataself.labels = labelsdef __len__(self):return len(self.data)def __getitem__(self, idx):return self.data[idx], self.labels[idx]dataset = CustomDataset(data, labels)
    dataloader = DataLoader(dataset, batch_size=32, shuffle=True)
    
示例代码

以下是一个简单的完整示例,包括数据准备、模型定义、训练和评估:

import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader, TensorDataset# 生成一些随机数据
x_data = torch.randn(100, 10)
y_data = torch.randn(100, 1)# 创建数据集和数据加载器
dataset = TensorDataset(x_data, y_data)
dataloader = DataLoader(dataset, batch_size=32, shuffle=True)# 定义一个简单的神经网络
class SimpleNN(nn.Module):def __init__(self):super(SimpleNN, self).__init__()self.fc = nn.Linear(10, 1)def forward(self, x):return self.fc(x)model = SimpleNN()# 定义损失函数和优化器
loss_fn = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)# 训练模型
for epoch in range(100):for x_batch, y_batch in dataloader:optimizer.zero_grad()output = model(x_batch)loss = loss_fn(output, y_batch)loss.backward()optimizer.step()# 评估模型
with torch.no_grad():output = model(x_data)loss = loss_fn(output, y_data)print(f'Final loss: {loss.item()}')

总结

PyTorch 是一个强大且灵活的深度学习框架,特别适合研究和快速原型设计。它的动态计算图、自动求导和丰富的工具库使其成为深度学习领域的重要工具。通过学习和使用 PyTorch,你可以更高效地构建、训练和部署复杂的深度学习模型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/348095.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++开源软件:跨平台本地密码管理器KeePassXC/KeePassDX

KeePassXC、KeePass和KeePassDX在功能、平台和特点上有所区别,以下是对这三款密码管理器的清晰区分: KeePassXC: 平台:跨平台,支持Windows、macOS和Linux等主流操作系统。 安全性:使用AES加密算法&#x…

LeetCode | 66.加一

这道题有多个思路,可以依次取数组的每一位,乘10后加下一位,直到最后一位,就得到我们数组所表示的数字,然后加一,然后把新得到的数字再转化为对应的数组,我的做法是直接取数组的最后一位&#xf…

[CUDA 学习笔记] 稀疏矩阵向量乘法(SpMV) CUDA 实现与优化

稀疏矩阵向量乘法(SpMV) CUDA 实现与优化 本文主要围绕基于 CUDA 的 SpMV 实现进行介绍, 包括几种典型稀疏矩阵存储格式下 SpMV 的朴素实现, 以及 CSR 格式下的几种优化实现. 稀疏矩阵存储格式 稀疏矩阵即含有大量零元的矩阵. 对于稀疏矩阵, 像稠密矩阵一样使用二维数组来存…

组织创新|AI赋能敏捷实践,助力企业敏捷转型

在工业5.0时代,随着项目变得越来越复杂,对效率的需求也在增长,致力于敏捷转型的组织正在寻求创新的解决方案来应对常见的挑战:工作量不平衡、低效的任务分配和知识孤岛等等。对此,AI等尖端技术的潜力可以帮助实现更高效…

译译交友项目介绍

一、 项目背景 随着社会的进步,英语作为一种国际语言,很多人都在学习英语,然而现在很多人都会因为学习英语而烦恼,有时还会因为是一个人学习而感到枯燥。面对情绪的低落,往往会使学习更困难。因此,我打造了…

电视剧推荐

1、《春色寄情人》 2、《唐朝诡事录》 3、《南来北往》 4、《与凤行》 5、《利剑玫瑰》 6、《承欢记》

uniapp使用vue3语法构建自定义导航栏,适配小程序胶囊

具体代码 <view v-if"isCustom" class"nav-content-container" :style"height:navContentHeight px;"><slot name"left"></slot><slot name"middle"> </slot><view :style"width:…

网工内推 | 深信服、中软国际技术支持工程师,最高13k*13薪

01 深信服 &#x1f537;招聘岗位&#xff1a;远程技术支持工程师 &#x1f537;任职要求&#xff1a; 一、专业能力和行业经验&#xff1a; ①具备友商同岗位工作经验1.5年以上&#xff0c;具备良好的分析和判断能力&#xff0c;有独立问题处理思路&#xff0c;具备常见协…

SpringAI调用OpenAI Demo

Spring AI 在maven的setting.xml <mirror> <id>spring-milestones</id> <name>Spring Milestones</name> <mirrorOf>spring-milestones</mirrorOf> <url>https://repo.sprin…

C++ 12 之 指针引用

c12指针引用.cpp #include <iostream>using namespace std;struct students12 {int age; };int main() {students12 stu;students12* p &stu; // 结构体指针students12* &pp p; // 结构体指针起别名pp->age 20;// (*pp).age 22;cout << "…

sqli-labs 靶场 less-7 第七关详解:OUTFILE注入与配置

SQLi-Labs是一个用于学习和练习SQL注入漏洞的开源应用程序。通过它&#xff0c;我们可以学习如何识别和利用不同类型的SQL注入漏洞&#xff0c;并了解如何修复和防范这些漏洞。Less 7 SQLI DUMB SERIES-7判断注入点 进入页面中&#xff0c;并输入数据查看结果。 发现空数据提…

【Python】成功解决ModuleNotFoundError: No module named ‘PyQt5‘

【Python】成功解决ModuleNotFoundError: No module named ‘PyQt5’ 下滑即可查看博客内容 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xff1a;985…

nodejs——原型链污染

一、引用类型皆为对象 原型和原型链都是来源于对象而服务于对象的概念&#xff0c;所以我们要先明确一点&#xff1a; JavaScript中一切引用类型都是对象&#xff0c;对象就是属性的集合。 Array类型、Function类型、Object类型、Date类型、RegExp类型等都是引用类型。 也就…

WPS JSA 宏脚本入门和样例

1入门 WPS window版本才支持JSA宏的功能。 可以自动化的操作文档中的一些内容。 参考文档&#xff1a; WPS API 参考文档&#xff1a;https://open.wps.cn/previous/docs/client/wpsLoad 微软的Word API文档&#xff1a;Microsoft.Office.Interop.Word 命名空间 | Microsoft …

Latex | 数学公式

Latex 最近在学习使用 LaTeX 来敲公式&#xff0c;写材料。说实话&#xff0c;这个工具在写公式方面&#xff0c;确实堪称神器&#xff01;不只是我&#xff0c;连爱因斯坦要是看到它&#xff0c;估计都会点个赞。 在这里&#xff0c;我也得给大家分享一个宝藏网址&#xff1…

SolidWorks官方授权代理商亿达四方带您解读最新SW版本特性

在快速迭代的工业设计领域&#xff0c;每一次软件的更新都预示着生产力的跃升和设计边界的拓展。作为行业领先的3D CAD解决方案&#xff0c;SolidWorks的最新版本再次站在了技术创新的前沿&#xff0c;为企业和设计师们带来了前所未有的设计效率与创意自由度。亿达四方&#xf…

LeakSearch:针对网络公开凭证的安全扫描与检测工具

关于LeakSearch 在红队演戏过程中&#xff0c;往往需要获取到针对目标域的访问权限。在这个过程中&#xff0c;很多红队人员会选择使用暴露在互联网上的代理服务器来实现目标域的访问&#xff0c;那么此时就需要在互联网上收集公开暴露的凭证信息。 对于蓝队来说&#xff0c;…

每日5题Day23 - LeetCode 111 - 115

每一步向前都是向自己的梦想更近一步&#xff0c;坚持不懈&#xff0c;勇往直前&#xff01; 第一题&#xff1a;111. 二叉树的最小深度 - 力扣&#xff08;LeetCode&#xff09; /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeN…

python的%time 、%%time 、%timeit、%%timeit的区别

%time 、%timeit 要在ipython下才可以使用。(所以说Jupyter Notebook当然是可以用的,pycharm里的python环境也是jupyter Notebook的) %time可以测量一行代码执行的时间 %timeit可以测量一行代码多次执行的时间 网上有说法说,%timeit是测量一行代码100000次循环内,3次最快速…

Vulnhub-DC-1,7

靶机IP:192.168.20.141 kaliIP:192.168.20.128 网络有问题的可以看下搭建Vulnhub靶机网络问题(获取不到IP) 前言 1和7都是Drupal的网站&#xff0c;只写了7&#xff0c;包含1的知识点 信息收集 用nmap扫描端口及版本号 进入主页查看作者给的提示&#xff0c;不是暴力破解的…