我的NVIDIA开发者之旅” | 征文活动进行中.......

模型的保存和加载

pytorch的安装方法这里就不写了,之前的文章有记录,nvidia官网的资料已经很详细了附上连接(注意你的Jetpack版本就好了,一般玄学的问题都出现在这里)

PyTorch for Jetson - version 1.11 now available - Jetson & Embedded Systems / Jetson Nano - NVIDIA Developer Forums

安装pychrom的方法之前的文章也有完整的记录,基本环境也就是这些。今天用到的也就是pytorch。

神经网络的训练一般要进行的步骤:

加载数据集,并做预处理。
预处理后的数据分为 feature 和 label 两部分,feature 送到模型里面,label 被当做 ground-truth。
model 接收 feature 作为 input,并通过一系列运算,向外输出 predict。
通过以 predict 和 predict 为变量,建立一个损失函数 Loss,Loss 的函数值是为了表示 predict 与 ground-truth 之间的差距。
建立 Optimizer 优化器,优化的目标就是 Loss 函数,让它的取值尽可能最小,loss 越小代表 Model 预测的准确率越高。
Optimizer 优化过程中,Model 根据规则改变自身参数的权重,这是个反复循环和持续的过程,直到 loss 值趋于稳定,不能在取得更小值。

CIFAR-10 和 CIFAR-100 是 8000 万张微小图像数据集的标记子集。它们由Alex Krizhevsky,Vinod Nair和Geoffrey Hinton收集。

CIFAR-10 数据集

CIFAR-10 数据集由 10 个类中的 60000 张 32x32 彩色图像组成,每个类包含 6000 张图像。有 50000 张训练图像和 10000 张测试图像。

数据集分为五个训练批次和一个测试批次,每个批次包含 10000 张图像。测试批次正好包含从每个类中随机选择的 1000 张图像。训练批次包含随机顺序的剩余图像,但某些训练批次可能包含来自一个类的图像多于另一个类的图像。在它们之间,训练批次正好包含来自每个类的 5000 张图像。

运行代码后,会自动下载数据集,并存放在当前目录下的 data 文件中。

# 这是一个示例 Python 脚本。# 按 Shift+F10 执行或将其替换为您的代码。
# 按 Double Shift 在所有地方搜索类、文件、工具窗口、操作和设置。def print_hi(name):# 在下面的代码行中使用断点来调试脚本。print(f'Hi, {name}')  # 按 Ctrl+F8 切换断点。# 按间距中的绿色按钮以运行脚本。
if __name__ == '__main__':print_hi('PyCharm')# 访问 https://www.jetbrains.com/help/pycharm/ 获取 PyCharm 帮助
import torchfrom torch.utils.data import DataLoader
#import torch.nn as nn
from torch import nn
from model import *
torch.cuda.is_available()print('CUDA available: ' + str(torch.cuda.is_available()))a = torch.cuda.FloatTensor(2).zero_()
print('Tensor a = ' + str(a))
b = torch.randn(2).cuda()
print('Tensor b = ' + str(b))
c = a + b
print('Tensor c = ' + str(c))import torchvisiontrain_data = torchvision.datasets.CIFAR10("root=../data",train=True,transform=torchvision.transforms.ToTensor(),download=True)
test_date = torchvision.datasets.CIFAR10("root=../data",train=False,transform=torchvision.transforms.ToTensor(),download=True)trian_data_size = len(train_data)
test_data_size = len(test_date)
#train_data_size=10,xunlianshujujide changduwei10
print("xunlianshujujjidechangduwei:{}".format(trian_data_size))
print("ceshishujujjidechangduwei:{}".format(test_data_size))#liyongdataloader laijiazaishujujitrain_dataloader = DataLoader(train_data,batch_size=64)
test_dataloader = DataLoader(test_date,batch_size=64)#Build neural networktudui = Tudui()# sunshihanshuloss_fn = nn.CrossEntropyLoss()#youhuaqi
# learning_rate = 0.01
#1e-2=1x (10)^(-2) = 1/100 =0.01
learning_rate = 1e-2
optimizer = torch.optim.SGD(tudui.parameters(),lr=learning_rate)#shezhixunliandechishu
#jiluxunliandechichu
total_train_setp = 0
##jiluceshide cichu
total_test_step = 0# xunlianndelunsh
epoch = 10for i in range(epoch):print("---------di{}lunxunlianstart".format(i+1))#xunliankaishifor data in train_dataloader:imgs, targets = dataoutputs = tudui(imgs)loss = loss_fn(outputs,targets)#youhuaqijianmoxingoptimizer.zero_grad()loss.backward()optimizer.step()total_train_setp =  total_train_setp + 1print("xunliancishu:{},loss:{}".format(total_test_step, loss.item()))

epoch 和 iteration 的区别,iteration 指的是单次 mini-batch 训练,而 epoch 和数据集的大小还有 batch size 有关。
CIFAR-10 训练集图片数量是 50000,batch size 的大小是 100,所以要经过 500 次 iteration 才算走完一个 epoch。
epoch 可以大致当成神经网络把训练集所有的照片从头看到尾都过一遍。

运行结果如下图。

ljx@ljx-desktop:~/PycharmProjects/pythonProject$ cat model.pyimport torch
from torch  import nnclass Tudui(nn.Module):def __init__(self):super(Tudui, self).__init__()self.model = nn.Sequential(nn.Conv2d(3, 32, 5, 1, 2),nn.MaxPool2d(2),nn.Conv2d(32, 32, 5, 1, 2),nn.MaxPool2d(2),nn.Conv2d(32, 64, 5, 1, 2),nn.MaxPool2d(2),nn.Flatten(),nn.Linear(64 * 4 * 4, 64),nn.Linear(64, 10))def forward(self, x):x = self.model(x)return xif __name__ == '__main__':tudui = Tudui()input = torch.ones((64, 3, 32, 32))output = tudui(input)print(output.shape)

Jetson nano用来测试这个是很吃力的,希望各位同学还是换个性能强悍的nx或者orin试试。

我的NVIDIA开发者之旅-Jetson Nano 2gb教你怎么训练模型(完整的模型训练套路)相关推荐

  1. 我的NVIDIA开发者之旅-Jetson在没有显示器的状态下使用Vnc操控GUI界面开发的三种实用技巧

    "我的NVIDIA开发者之旅" | 征文活动进行中....... 首先是因为小编是没有显示器用,想着用vnc操作图形界面,使用了nvidia自带的vnc远程方法是无效的在没显示器的 ...

  2. 英伟达 nano 新手必读:Jetson Nano 2GB 开发者套件入门指南

    引言 NVIDIA®Jetson Nano™ 2GB开发工具包是教学.学习和开发人工智能和机器人技术的理想选择.有了一个活跃的开发人员社区并准备好构建开源项目,您将找到开始工作所需的所有资源.它以低廉 ...

  3. 我的NVIDIA开发者之旅——作为一名初学者,我是如何开启 NVIDIA Jetson Nano 开发的

    "我的NVIDIA开发者之旅" | 征文活动进行中- ⭐️ 作者:前端修罗场 ⭐️ 本文名称:我的NVIDIA开发者之旅--作为一名初学者,我是如何开启 NVIDIA Jetson ...

  4. 我的NVIDIA开发者之旅——利用NVIDIA TAO工具包3.0和Deepstream快速搭建车辆信息识别系统

    利用NVIDIA TAO工具包3.0和Deepstream快速搭建车辆信息识别系统 实现目标 部署工具:NVIDIA DeepStream SDK 简单设置参数 工作流程 注意事项 GPU深度学习推理 ...

  5. python怎么另起一行阅读答案_使用Python+Dlib构建人脸识别系统(在Nvidia Jetson Nano 2GB开发板上)...

    Nvidia Jetson Nano 2GB开发板是一款新的单板机 售价59美元 运行带有GPU加速的人工智能软件.在2020年 你可以从一台售价59美元的单板计算机中获得令人惊叹的性能 让我们用它来 ...

  6. 我的NVIDIA开发者之旅——NVIDIA云原生技术

    NVIDIA云原生技术:耐心看完受益匪浅 第一篇->NVIDIA云原生技术 [1]NVIDIA容器工具包 [2]GPU操作员 [3]带GPU的Kubernetes [3.1]安装Kubernet ...

  7. linux的系统监视器图片_用Nvidia Jetson Nano 2GB和Python构建一个价值60美元的人脸识别系统...

    作者|Adam Geitgey 编译|Flin 来源|medium 新的Nvidia Jetson Nano 2GB开发板(今天宣布!)是一款单板机,售价59美元,运行带有GPU加速的人工智能软件. ...

  8. linux的系统监视器图片_用Nvidia Jetson Nano 2GB和Python构建一个价值60美元的人脸识别系统 - 人工智能遇见磐创...

    作者|Adam Geitgey 编译|Flin 来源|medium 新的Nvidia Jetson Nano 2GB开发板(今天宣布!)是一款单板机,售价59美元,运行带有GPU加速的人工智能软件. ...

  9. 使用Python+Dlib构建人脸识别系统(在Nvidia Jetson Nano 2GB开发板上)

    Nvidia Jetson Nano 2GB开发板是一款新的单板机,售价59美元,运行带有GPU加速的人工智能软件. 在2020年,你可以从一台售价59美元的单板计算机中获得令人惊叹的性能,让我们用它 ...

最新文章

  1. Day03 - Ruby比一比:Module的include与extend
  2. Linux 下安装 Android Studio
  3. [转]批处理for命令使用指南
  4. 线性代数的学习及相关资源
  5. Yii设置响应数据的样式与内容
  6. 图片验证码防暴力破解_Java
  7. CVPR 2019 | 腾讯AI:做好活体检测,模型重要,数据亦然
  8. 一周小结(2016-05-16~2016-05-21)
  9. C# WPF MVVM 实战 – 3 – 树结构
  10. java Cannot find the class file for javax.servlet.http.HttpServletRequest.错误解决
  11. Markdown绘制思维导图
  12. 证件阅读设备一般可以识别哪些证件
  13. lcx端口转发linux_技术干货 | 内网渗透之代理转发
  14. 适合包邮地区的 省市选择 jquery插件
  15. 90后小伙自己开发APP年赚10亿,自己开发APP需要什么工具
  16. 【逻辑思维训练 二】系统思维训练
  17. C++ 之基本结构语法
  18. 海湾gst5000主机消防广播_海湾GST5000消防主机常见问题及解决!
  19. Linux系统查看FC HBA卡信息的方法
  20. 软考--快速掌握操作系统的PV操作

热门文章

  1. kali linux改root密码
  2. ZigBee自组网地址分配与路由协议技术详解
  3. [GKCTF2020]CheckIN
  4. 【git之路】拉取远程分支到本地
  5. 容斥原理 —— 求1~n有多少个数与k互质(二进制算法详细解释模板)
  6. Bus Hound 工具抓取串口数据(PC端抓取USB转串口数据)
  7. 金九银十|前端真实面试知识点梳理
  8. php中empty功能,深入理解PHP中的 empty()函数
  9. CS61A Lab 14
  10. 如何在MATLAB中调用(运行)“用Python写成的函数或脚本”