树莓派_Pytorch学习笔记20:初步认识深度学习框架

news2024/9/16 9:51:25

今日继续学习树莓派4B 4G:(Raspberry Pi,简称RPi或RasPi)

本人所用树莓派4B 装载的系统与版本如下:

 版本可用命令 (lsb_release -a) 查询:

 Python 版本3.7.3:

本文很水,就介绍一下我以后的学习使用PC训练深度学习模型,然后给树莓派推理的开发想法

为何在PC端安装pytorch环境:

模型训练通常对硬件要求较高,但推理阶段对硬件的要求相对较低。这允许你将模型部署到各种边缘设备上,如树莓派。

使用树莓派进行PyTorch深度学习模型的训练,虽然技术上可行,但通常不是最优选择,主要因为树莓派的计算能力和内存资源相对有限。

因此,在更高性能的Windows电脑上先训练好模型,然后再将训练好的模型部署到树莓派上进行推理(即使用模型进行预测或分类等操作)的做法是非常提倡的,也是实际应用中常见的做法。

  1. 模型兼容性:确保在Windows上训练的模型能够无缝迁移到树莓派上。这通常不是问题,因为PyTorch模型是跨平台的,但你需要确保所有依赖库(如PyTorch本身)在树莓派上也是兼容的。
  2. 性能优化:虽然树莓派足以进行推理,但可能需要对模型进行量化或剪枝等优化措施,以进一步提高在树莓派上的运行效率。
  3. 数据传输:如果模型或数据集非常大,可能需要考虑如何将它们从Windows电脑传输到树莓派。确保有稳定且足够快的网络连接,或者使用外部存储设备(如USB驱动器)进行传输。
  • 选择合适的模型:根据树莓派的性能限制,选择适合在边缘设备上运行的模型。
  • 进行模型优化:在部署到树莓派之前,对模型进行必要的优化,如量化、剪枝等。
  • 使用容器化技术:考虑使用Docker等容器化技术来打包和部署模型,以确保在不同环境下的一致性和可移植性。
  • 测试与验证:在树莓派上充分测试模型,确保其在目标应用中的准确性和性能符合预期。

ONNX协议:

  • 模型转换:将不同框架(如PyTorch、TensorFlow、MXNet等)训练的模型转换为ONNX格式,以便在其他框架或硬件上部署。
  • 模型优化:利用ONNX Runtime等推理引擎对ONNX模型进行优化,提高模型的推理速度和效率。
  • 模型部署:将ONNX模型部署到各种硬件和平台上,包括云端、边缘设备和移动端等。

初步认识Pytorch:

GPU加速

GPU加速是通过将数据和模型从CPU转移到GPU来实现的,从而利用GPU的并行计算能力来加速深度学习模型的训练和推理过程。

示例: 定义俩个比较大的矩阵进行运算,分别使用CPU与GPU进行运算比较

GPU运行了俩次,第二次所用时间小于CPU:

自动求导

PyTorch的自动求导机制是训练神经网络时的一个核心概念,它使得计算梯度变得简单而高效。

常用网络层

PyTorch提供了丰富的网络层实现,包括全连接层、卷积层、池化层、激活函数层等。

深度学习训练过程:

把图像拆分成以为像素阵列

Pytorch 最全入门介绍,Pytorch入门看这一篇就够了-CSDN博客

 
 

匆匆结语:

没有实践的理论学习与查找资料真是枯燥无味......

配置个环境变量丝毫没有任何成就感,觉得很浪费时间...

网上学习资料贴出:

10分钟入门神经网络 PyTorch 手写数字识别_哔哩哔哩_bilibili

 文心一言

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

全志A527 T527 android13支持usb摄像头

1.前言 我们发现usb摄像头在A527 android13上面并不能正常使用,需要支持相关的摄像头。 2.系统节点查看 我们查看系统是否有相关的节点生成,发现/dev/video相关的节点已经生成了。并没有问题,拔插正常。 3.这里我们需要查看系统层是否支持相关的相机, 我们使用命令进行…

前端传到后端的data数组中有些属性值为空

将前端输入框中的值全部放入data中传入后端,但是在后端查看发现后端接收到的数据有些属性值为空。 第一种情况:只有第一个属性为空,其余属性接收正常 可能原因:后端用来接收的 比如前端发送数据: 实际上前端发送的数…

Java | Leetcode Java题解之第224题基本计算器

题目&#xff1a; 题解&#xff1a; class Solution {public int calculate(String s) {Deque<Integer> ops new LinkedList<Integer>();ops.push(1);int sign 1;int ret 0;int n s.length();int i 0;while (i < n) {if (s.charAt(i) ) {i;} else if (s…

政安晨:【Keras机器学习示例演绎】(五十三)—— 使用 TensorFlow 决策森林进行分类

目录 简介 设置 准备数据 定义数据集元数据 配置超参数 实施培训和评估程序 实验 1&#xff1a;使用原始特征的决策森林 检查模型 实验 2&#xff1a;目标编码决策森林 创建模型输入 使用目标编码实现特征编码 使用预处理器创建梯度提升树模型 训练和评估模型 实验…

FastReport 指定sql,修改数据源 ( 非DataSet修改 )

FastReport 指定sql&#xff0c;修改数据源&#xff0c;非DataSet修改 介绍报告文件&#xff1a; codetest.frx 文件核心代码&#xff1a;&#xff08;扩展&#xff09;小结一下&#xff1a; 介绍 在FastReport中&#xff0c;经常会遇到需要给 sql 加条件的情况。 &#xff0…

k8s 部署 metribeat 实现 kibana 可视化 es 多集群监控指标

文章目录 [toc]环境介绍老(来)板(把)真(展)帅(示)helm 包准备配置监控集群获取集群 uuid生成 api_key配置 values.yaml 配置 es 集群获取集群 uuid 和 api_key配置 values.yaml 查看监控 缺少角色的报错 开始之前&#xff0c;需要准备好以下场景 一套 k8s 环境 k8s 内有两套不同…

jvisualvm工具使用--添加远程监视

jvisualvm简介 jvisualvm该工具位于jdk的bin目录下&#xff0c;是jdk自带的可用于监控线程、内存情况、查看方法的CPU时间和内存中的对 象、已被GC的对象、反向查看分配的堆栈等&#xff0c;即&#xff1a;Java虚拟机监控、故障排查及性能分析工具。 远程监控方法 以windows端…

ProFormList --复杂数据联动ProFormDependency

需求&#xff1a; &#xff08;1&#xff09;数据联动&#xff1a;测试数据1、2互相依赖&#xff0c;测试数据1<测试数据2,测试数据2>测试数据1。 &#xff08;2&#xff09;点击添加按钮&#xff0c;添加一行。 &#xff08;3&#xff09;自定义操作按钮。 &#xff0…

后端之路——登录校验前言(Cookie\ Session\ JWT令牌)

前言&#xff1a;Servlet 【登录校验】这个功能技术的基础是【会话技术】&#xff0c;那么在讲【会话技术】的时候必然要谈到【Cookie】和【Session】这两个东西&#xff0c;那么在这之前必须要先讲一下一个很重要但是很多人都会忽略的一个知识点&#xff1a;【Servlet】 什么是…

Android约束布局的概念与属性(2)

目录 3&#xff0e;链式约束4&#xff0e;辅助线 3&#xff0e;链式约束 如果两个或以上控件通过下图的方式约束在一起&#xff0c;就可以认为是他们是一条链&#xff08;如图5为横向的链&#xff0c;纵向同理&#xff09;。 图5 链示意图 如图5所示&#xff0c;在预览图中选…

CTFShow中BJDCTF2020的RE题

encode 写脚本时候发现了应该就是一个 base64 和 RC4 结合 base64 rc4的初始化S盒 rc4的异或加密 好久没有做题&#xff0c;有点忘记了&#xff0c;直接动调 可以把初始 S盒调出来&#xff0c;后面解总是出乱码&#xff0c;也是看了好久的wp才知道v6后面要赋值的字符串是十…

关于Mars3d的入门

关于Mars3d的入门 一. 创建地球&#xff0c;加载瓦片图层二 矢量图层2.1 常用矢量图层2.1.1 GraphicLayer2.1.2 GeoJsonLayer 2.2 矢量图层的点击事件 三 矢量数据四 事件机制 一. 创建地球&#xff0c;加载瓦片图层 // 1. 创建地球let map new mars3d.Map("mars3dContai…

FOC算法

如下图所示的&#xff0c;是FOC算法的整体流程图&#xff0c;下面图中最重要的部分就是SVPWM和3相全桥电路&#xff0c;和送给SVPWM进行运算&#xff0c;运算之后的结果为三个相差120的马鞍波&#xff0c;然后将这三相马鞍波作为控制全桥MOS开关的三个PWM波的占空比&#xff0c…

Vortex GPGPU的硬件设计和代码结构分析

文章目录 前言一、GPGPU是什么&#xff1f;1.1 GPU和GPGPU之间的差异1.2 GPU和CPU之间的集成方式1.3 GPU包含什么&#xff08;列举和VMIPS向量体系结构的差异&#xff09; 二、Vortex GPGPU是什么&#xff1f;2.1 Vortex GPGPU的技术边界和验证环境2.2 Vortex GPGPU的指令集设计…

Kubernetes基于helm部署jenkins

Kubernetes基于helm安装jenkins jenkins支持war包、docker镜像、系统安装包、helm安装等。在Kubernetes上使用Helm安装Jenkins可以简化安装和管理Jenkins的过程。同时借助Kubernetes&#xff0c;jenkins可以实现工作节点的动态调用伸缩&#xff0c;更好的提高资源利用率。通过…

C++ | Leetcode C++题解之第223题矩形面积

题目&#xff1a; 题解&#xff1a; class Solution { public:int computeArea(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) {int area1 (ax2 - ax1) * (ay2 - ay1), area2 (bx2 - bx1) * (by2 - by1);int overlapWidth min(ax2, bx2) - max…

使用void 0替代undefined

在很多大厂的规范里面&#xff0c;有这么一条规定&#xff1a;不让直接使用undefined关键字&#xff0c;而应该使用void 0来替代undefined。 一、void 0是什么意思&#xff1f; void是一个关键字&#xff0c;他后面跟的是一个表达式&#xff0c;不管这个表达式算的是啥&#…

you should not run configure as root, 升级tar出错

为了能用 tar 支持 zstd 的压/解缩包命令&#xff0c;需要升级 tar 到 1.3 以上&#xff0c;下面是下载和编译、安装命令&#xff1a; wget https://mirrors.aliyun.com/gnu/tar/tar-1.32.tar.bz2 tar -jxvf tar-1.32.tar.bz2 cd tar-1.32 ./configure make make install但在执…

Docker定时清理

一、循环调度执行 1、检查cron状态 systemctl status crond 2、创建要执行的shell脚本 vim /home/cleanup_docker.sh #! /bin/bash # 清理临时文件 echo $(date "%H:%M:%S") "执行docker清理命令..." docker system prune -af-a 清理包括未使用的镜像 …

PyJWT,一个基于JSON的轻量级安全通信方式的python库

目录 什么是JWT&#xff1f; JWT的构成 PyJWT库简介 安装PyJWT 生成JWT 验证JWT 使用PyJWT的高级功能 自定义Claims 错误处理 结语 什么是JWT&#xff1f; 在介绍PyJWT这个Python库之前&#xff0c;我们首先需要了解什么是JWT。JWT&#xff0c;全称JSON Web Token&am…