深度学习篇---深度学习框架
文章目录
- 前言
- 第一部分:框架简介
- 1. PyTorch
- 简介
- 特点
- 动态计算图
- 易于上手
- 强大的社区支持
- 与Python的集成度高
- 核心组件
- 2. TensorFlow
- 简介
- 特点
- 静态计算图
- 跨平台
- 强大的生态系统
- Keras集成
- 核心组件
- 3. PaddlePaddle
- 简介
- 特点
- 易于使用
- 高性能
- 工业级应用
- 丰富的预训练模型
- 核心组件
- 第二部分:基本操作
- PyTorch 基本操作
- TensorFlow 基本操作
- PaddlePaddle 基本操作
- 总结
前言
以上就是今天要讲的内容,本文仅仅简单介绍了Pytorch、TensorFlow、Paddlepaddle三个深度学习框架以及其基本操作。
第一部分:框架简介
1. PyTorch
简介
简介: PyTorch是由Facebook的人工智能研究团队开发的一个开源机器学习库,主要用于应用如计算机视觉和自然语言处理等领域的深度学习。它是一个动态计算图框架,提供了灵活性和易用性。
特点
动态计算图
动态计算图(Dynamic Computation Graph): PyTorch使用动态图,使得调试和实验更加灵活。
易于上手
易于上手: PyTorch的API设计接近Python原生代码,易于理解和编写。
强大的社区支持
强大的社区支持: PyTorch拥有一个活跃的社区,提供了大量的预训练模型和教程。
与Python的集成度高
与Python深度集成: PyTorch可以很好地与Python的其他库(如NumPy)集成。
核心组件
torch.Tensor: 提供了多维数组(张量)的操作。
torch.nn: 包含了神经网络的各种层和激活函数。
torch.optim: 提供了各种优化算法。
torch.utils.data: 用于数据加载和预处理。
2. TensorFlow
简介
简介: TensorFlow是由Google Brain团队开发的另一个开源机器学习库,它支持广泛的机器学习任务,并且可以在多种平台上运行。
特点
静态计算图
静态计算图(Static Computation Graph): TensorFlow使用静态图,有利于优化和部署。
跨平台
跨平台: TensorFlow可以在不同的设备上运行,包括CPU、GPU和TPU。
强大的生态系统
强大的生态系统: TensorFlow拥有丰富的工具和库,如TensorBoard、TensorFlow Lite等。
Keras集成
Keras集成: TensorFlow 2.x版本中,Keras成为了其高级API,使得构建和训练模型更加简单。
核心组件
tf.Tensor: 表示计算图中的数据。
tf.keras: 提供了高层次的API来构建和训练模型。
tf.data: 用于数据输入管道。
tf.train: 提供了优化器和其他训练工具。
3. PaddlePaddle
简介
简介: PaddlePaddle(简称PD)是由百度开发的一个深度学习平台,旨在让研究人员和开发人员能够轻松地构建各种深度学习模型。
特点
易于使用
易于使用: PaddlePaddle提供了丰富的API,使得模型构建更加简单。
高性能
高性能: PaddlePaddle针对服务器和移动设备进行了优化。
工业级应用
工业级应用: PaddlePaddle在工业界有广泛的应用,特别是在中国。
丰富的预训练模型
丰富的预训练模型: PaddlePaddle提供了大量的预训练模型,方便开发者使用。
核心组件
paddle.Tensor: 提供了张量操作。
paddle.nn: 包含了神经网络的层和激活函数。
paddle.optimizer: 提供了各种优化算法。
paddle.io: 用于数据加载和预处理。
这三个框架各有优势,开发者可以根据自己的需求、熟悉度和项目特点来选择合适的框架。
第二部分:基本操作
PyTorch 基本操作
安装PyTorch:
pip install torch torchvision torchaudio
创建张量(Tensor):
import torch
创建一个未初始化的5x3矩阵
x = torch.empty(5, 3)
创建一个随机初始化的5x3矩阵
x = torch.rand(5, 3)
创建一个全零的5x3矩阵,数据类型为long
x = torch.zeros(5, 3, dtype=torch.long)
张量操作:
创建张量
x = torch.tensor([5.5, 3])
y = torch.tensor([2.0, 1.0])
加法运算
z = x + y
乘法运算
z = x * y
索引
print(x[0])
自动微分(Autograd):
requires_grad=True表示需要计算梯度
x = torch.ones(2, 2, requires_grad=True)
y = x + 2
z = y * y * 3
out = z.mean()
计算梯度
out.backward()
打印梯度
print(x.grad)
神经网络(nn.Module):
import torch.nn as nn
import torch.nn.functional as Fclass Net(nn.Module):def __init__(self):super(Net, self).__init__()# 定义网络层self.conv1 = nn.Conv2d(1, 6, 3)self.conv2 = nn.Conv2d(6, 16, 3)def forward(self, x):# 前向传播x = F.max_pool2d(F.relu(self.conv1(x)), (2, 2))x = F.max_pool2d(F.relu(self.conv2(x)), 2)return xnet = Net()
print(net)
TensorFlow 基本操作
安装TensorFlow:
pip install tensorflow
创建张量(Tensor):
import tensorflow as tf
创建一个常量张量
x = tf.constant([[1, 2, 3], [4, 5, 6]])
张量操作:
创建张量
a = tf.constant([[1, 2], [3, 4]])
b = tf.constant([[5, 6], [7, 8]])
加法运算
c = a + b
乘法运算
d = a * b
执行运算
print(c.numpy())
自动微分(Autograph):
使用tf.GradientTape来跟踪操作
x = tf.Variable(3.0)
with tf.GradientTape() as tape:y = x * x
计算梯度
dy_dx = tape.gradient(y, x)
print(dy_dx.numpy())
构建模型(tf.keras):
model = tf.keras.Sequential([tf.keras.layers.Dense(10, activation='relu', input_shape=(32,)),tf.keras.layers.Dense(1)
])model.compile(optimizer='adam',loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),metrics=['accuracy'])
模型摘要
model.summary()
PaddlePaddle 基本操作
安装PaddlePaddle:
pip install paddlepaddle
创建张量(Tensor):
import paddle
创建一个零张量
x = paddle.zeros([2, 3], dtype='float32')
张量操作:
创建张量
a = paddle.to_tensor([[1.0, 2.0], [3.0, 4.0]])
b = paddle.to_tensor([[5.0, 6.0], [7.0, 8.0]])
加法运算
c = paddle.add(a, b)
总结
以上就是今天要讲的内容,本文仅仅简单介绍了Pytorch、TensorFlow、Paddlepaddle三个深度学习框架以及其基本操作。
相关文章:
深度学习篇---深度学习框架
文章目录 前言第一部分:框架简介1. PyTorch简介特点动态计算图易于上手强大的社区支持与Python的集成度高 核心组件 2. TensorFlow简介特点静态计算图跨平台强大的生态系统Keras集成 核心组件 3. PaddlePaddle简介特点易于使用高性能工业级应用丰富的预训练模型 核心…...
Go学习:Go语言中if、switch、for语句与其他编程语言中相应语句的格式区别
Go语言中的流程控制语句逻辑结构与其他编程语言类似,格式有些不同。Go语言的流程控制中,包括if、switch、for、range、goto等语句,没有while循环。 目录 1. if 语句 2. switch语句 3. for语句 4. range语句 5. goto语句(不常用…...
Java中初步使用websocket(springBoot版本)
一、什么是websocket WebSocket是一种在Web应用程序中实现实时双向通信的协议。它为浏览器和服务器之间提供了一种持久连接,在一个连接上可以双向传输数据。相比传统的HTTP协议,WebSocket具有更低的延迟和更高的效率。 WebSocket使用了类似于握手的方式来…...
Day50:字典的合并
在 Python 中,字典是一个可变的数据类型,经常需要将多个字典合并成一个字典。合并字典的方式有多种,今天我们将学习几种常见的方法。 1. 使用 update() 方法合并字典 update() 方法可以用来将一个字典中的键值对添加到另一个字典中。如果目…...
14-8C++STL的queue容器
一、queue容器 (1)queue容器的简介 queue为队列容器,“先进先出”的容器 (2)queue对象的构造 queue<T>q; queue<int>que Int;//存放一个int的queue容器 queue<string>queString;//存放一个string的queue容器 (3)queue容器的push()与pop()方…...
C++范围for和auto关键字
这里写目录标题 一.范围for的介绍与使用模版:⽰例:打印数组2. 方法如下⽰例:打印数组二.auto 关键字一.范围for的介绍与使用 模版: for ( 类型 变量名 : 数组名 )语句 //多条语句需要加⼤括号 ⽰例:打印数组 #include <iostream> using namespace std; int main()…...
【B站保姆级视频教程:Jetson配置YOLOv11环境(四)cuda cudnn tensorrt配置】
Jetson配置YOLOv11环境(4)cuda cudnn tensorrt配置 文章目录 0. 简介1. cuda配置:添加cuda环境变量2. cudnn配置3. TensorRT Python环境配置3.1 系统自带Python环境中的TensorRT配置3.2 Conda 虚拟Python环境中的TensorRT配置 0. 简介 官方镜…...
信号模块--simulink操作
位置simulink/sourses 常用的模块 功能:常数模块,提供一个常数 数据设置可以是一维或多维 一维数据设置 多维数据设置(例三维数据设置) 方波脉冲模块 模块用于按固定间隔生成方波脉冲信号 振幅就是方波的幅度,0到…...
强化学习笔记(3)——基于值函数的方法和策略梯度方法
分为两大类方法: 基于值函数的方法(Temporal Difference Methods, TD Methods) 策略梯度方法(Policy Gradient Methods)。 二者不同之处: 通过值函数来间接表达隐式的策略,一个是直接迭代优化策…...
新年新挑战:如何用LabVIEW开发跨平台应用
新的一年往往伴随着各种新的项目需求,而跨平台应用开发无疑是当前备受瞩目的发展趋势。在众多开发工具中,LabVIEW 以其独特的图形化编程方式和强大的功能,为开发跨平台应用提供了有效的途径。本文将深入探讨如何运用 LabVIEW 开发能够在不同操…...
事务04之死锁,锁底层和隔离机制原理
死锁和事务底层原理 文章目录 死锁和事务底层原理一:MySQL中的死锁现象1:何为死锁1.1:死锁的概念1.2:死锁产生的四个必要条件: 2:MySQL的死锁2.1:死锁的触发2.2:MySQL的死锁如何解决…...
第05章 17 Contour 过滤器介绍与例子
vtkContourFilter 是 VTK(Visualization Toolkit)中的一个关键类,用于从输入数据生成等值线或等值面。它是基于阈值的过滤器,可以从标量字段中提取等值线或等值面。vtkContourFilter 的核心功能是根据用户指定的值生成等值线或等值…...
Golang 并发机制-2:Golang Goroutine 和竞争条件
在今天的软件开发中,我们正在使用并发的概念,它允许一次执行多个任务。在Go编程中,理解Go例程是至关重要的。本文试图详细解释什么是例程,它们有多轻,通过简单地使用“go”关键字创建它们,以及可能出现的竞…...
【4Day创客实践入门教程】Day0 创想启程——课程与项目预览
Day0 创想启程——课程与项目预览 目录 Day0 创想启程——课程与项目预览前言学习内容基本的单片机开发技能简单的焊接技能简单的MicroPython程序 后记 Day1 工具箱构建——开发环境的构建Day2 探秘微控制器——单片机与MicroPython初步Day3 实战演练——桌面迷你番茄钟Day4 迈…...
洛谷P3372 【模板】线段树 1以及分块
【模板】线段树 1 题目描述 如题,已知一个数列,你需要进行下面两种操作: 将某区间每一个数加上 k k k。求出某区间每一个数的和。 输入格式 第一行包含两个整数 n , m n, m n,m,分别表示该数列数字的个数和操作的总个数。 …...
(动态规划基础 打家劫舍)leetcode 198
已知h2和h1,用已知推出未知 推是求答案,回溯是给答案 这里图片给出dfs暴力,再进行记录答案完成记忆化搜索,再转为dp数组 #include<iostream> #include<vector> #include<algorithm> //nums:2,1,1,2 //dp:2,2,…...
Python 梯度下降法(四):Adadelta Optimize
文章目录 Python 梯度下降法(四):Adadelta Optimize一、数学原理1.1 介绍1.2 实现流程 二、代码实现2.1 函数代码2.2 总代码 三、优缺点3.1 优点3.2 缺点 四、相关链接 Python 梯度下降法(四):Adadelta Opt…...
旅行的意义:“诗与远方”和在旅途中找寻真我
原文链接:旅行的意义:“诗与远方”和在旅途中找寻真我 困在格子间,心向远方 清晨,闹钟催促,打工人挣扎起床出门。地铁拥挤,工作繁忙,加班成常态,下班时夜幕已深,满心疲惫…...
leetcode——将有序数组转化为二叉搜索树(java)
给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 平衡 二叉搜索树。 示例 1: 输入:nums [-10,-3,0,5,9] 输出:[0,-3,9,-10,null,5] 解释:[0,-10,5,null,-3,null,9] 也将被视为正确答…...
6 齐次坐标模块(homogen.rs)
homogen.rs代码定义了一个名为 HomogeneousVector 的结构体,它是用于表示三维空间中的齐次向量。齐次向量常用于计算机图形学和几何学中,特别是在处理投影和变换时。下面是对这段代码的详细解释和一些关键的代码片段分析: 一、homogen.rs文件…...
007 JSON Web Token
文章目录 https://doc.hutool.cn/pages/jwt/#jwt%E4%BB%8B%E7%BB%8D JWT是一种用于双方之间安全传输信息的简洁的、URL安全的令牌标准。这个标准由互联网工程任务组(IETF)发表,定义了一种紧凑且自包含的方式,用于在各方之间作为JSON对象安全地传输信息。…...
Cursor 背后的技术栈:从 VS Code 到 AI 集成
引言 在当今快速发展的软件开发领域,开发者工具正在经历一场由人工智能(AI)驱动的革命。Cursor 作为一款新兴的智能编程助手,凭借其强大的 AI 能力和高效的开发体验,迅速吸引了大量开发者的关注。Cursor 不仅继承了 V…...
【Python蓝桥杯备赛宝典】
文章目录 一、基础数据结构1.1 链表1.2 队列1.3 栈1.4 二叉树1.5 堆二、基本算法2.1 算法复杂度2.2 尺取法2.3 二分法2.4 三分法2.5 倍增法和ST算法2.6 前缀和与差分2.7 离散化2.8 排序与排列2.9 分治法2.10贪心法1.接水时间最短问题2.糖果数量有限问题3.分发时间最短问题4.采摘…...
前端js高级25.1.30
原型:函数的组成结构 通过这个图我们需要知道。 假设我们创建了一个Foo函数。 规则:Function.protoType是函数显示原型。__proto__是隐式对象。 Function、Object、Foo函数的__proto__指向了Function.protoType说明。这三个都依托function函数来创建。…...
【后端开发】字节跳动青训营之性能分析工具pprof
性能分析工具pprof 一、测试程序介绍二、pprof工具安装与使用2.1 pprof工具安装2.2 pprof工具使用 资料链接: 项目代码链接实验指南pprof使用指南 一、测试程序介绍 package mainimport ("log""net/http"_ "net/http/pprof" // 自…...
云原生(五十二) | DataGrip软件使用
文章目录 DataGrip软件使用 一、DataGrip基本使用 二、软件界面介绍 三、附件文件夹到项目中 四、DataGrip设置 五、SQL执行快捷键 DataGrip软件使用 一、DataGrip基本使用 1. 软件界面介绍 2. 附加文件夹到项目中【重要】 3. DataGrip配置 快捷键使用:C…...
FreeRTOS学习 --- 任务调度
开启任务调度器 作用:用于启动任务调度器,任务调度器启动后, FreeRTOS 便会开始进行任务调度 该函数内部实现,如下: 1、创建空闲任务(优先级最低) 2、如果使能软件定时器,则创建定…...
2025年人工智能技术:Prompt与Agent的发展趋势与机遇
文章目录 一、Prompt与Agent的定义与区别(一)定义(二)区别二、2025年Prompt与Agent的应用场景(一)Prompt的应用场景(二)Agent的应用场景三、2025年Prompt与Agent的适合群体(一)Prompt适合的群体(二)Agent适合的群体四、2025年Prompt与Agent的发展机遇(一)Prompt的…...
区块链 智能合约安全 | 回滚攻击
视频教程在我主页简介和专栏里 目录: 智能合约安全 回滚攻击 总结 智能合约安全 回滚攻击 回滚攻击的本质是”耍赖” 举一个简单的例子,两个人玩石头剪刀布,输了的给对方10块钱,现在A输了,A说这把不算,重来 放在Solidity中,require()函数会检测其中的条件是否满…...
【Go语言圣经】第六节:方法
第六章:方法 6.1 方法声明 在函数声明时,在其名字之前放上一个变量,这就是声明了变量对应类型的一个方法,相当于为这种类型定义了一个独占的方法。 下例为 Point 类型声明了计算两个点之间距离的方法: package mai…...
