Nvidia Jetson AGX Orin 初体验(三)实现LeNet网络

举报
张辉 发表于 2022/04/23 23:39:33 2022/04/23
【摘要】 本文介绍了Jetson AGX Orin的开练过程。

LeNet是典型的手写数字识别网络,常用于初学者的入门,我们就用它来试一下Orin的深度学习功能:

cudnn_sample 下面内置了一个LeNet网络的测试,我们来试一下:

先更新下源:

cd /usr/src/cudnn_samples_v8/mnistCUDNN/

sudo make

需要安装一些依赖包:sudo apt-get install libfreeimage3 libfreeimage-dev

重新编译:

进行测试:

从上面的例子可以看出,识别成功。

下面我们使用tensorflow+keras实现LeNet训练

先安装依赖包:

sudo apt-get install python3-numpy

sudo apt-get install python3-scipy

sudo apt-get install python3-pandas

sudo apt-get install python3-matplotlib

sudo apt-get install python3-sklearn

sudo apt-get install libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8-dev liblapack-dev libblas-dev gfortran

sudo apt-get install python3-pip

sudo pip3 install -U --no-deps numpy==1.19.4 future==0.18.2 mock==3.0.5 keras_preprocessing==1.1.2 keras_applications==1.0.8 gast==0.4.0 protobuf pybind11 cython pkgconfig -i https://pypi.tuna.tsinghua.edu.cn/simple

sudo env H5PY_SETUP_REQUIRES=0 pip3 install -U h5py==3.1.0

 查看下JetPack 5.0 tensorflow的包的地址:

安装Tensorflow 1.15:

sudo pip3 install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v50 'tensorflow<2'

检查TensorFlow是否成功安装:

安装Keras并检查是否成功安装:

sudo pip3 install keras

准备 keras_lenet.py这个训练LeNet网络的Python代码:(代码来源:https://blog.csdn.net/mr_muli/article/details/80992600 作者:木里先森)

# -*- coding: utf-8 -*-
"""
Created on Tue Jul 10 20:04:03 2018

@author: muli
"""

import tensorflow.keras
from tensorflow.keras.datasets import mnist
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten, Conv2D, MaxPooling2D
from tensorflow.keras import backend as K

num_classes = 10
img_rows, img_cols = 28, 28

# 通过Keras封装好的API加载MNIST数据。其中trainX就是一个60000 * 28 * 28的数组,
# trainY是每一张图片对应的数字。
(trainX, trainY), (testX, testY) = mnist.load_data()

# 根据对图像编码的格式要求来设置输入层的格式。
if K.image_data_format() == 'channels_first':
    trainX = trainX.reshape(trainX.shape[0], 1, img_rows, img_cols)
    testX = testX.reshape(testX.shape[0], 1, img_rows, img_cols)
    input_shape = (1, img_rows, img_cols)
else:
    trainX = trainX.reshape(trainX.shape[0], img_rows, img_cols, 1)
    testX = testX.reshape(testX.shape[0], img_rows, img_cols, 1)
    input_shape = (img_rows, img_cols, 1)

trainX = trainX.astype('float32')
testX = testX.astype('float32')
trainX /= 255.0
testX /= 255.0

# 将标准答案转化为需要的格式(one-hot编码)。
trainY = tensorflow.keras.utils.to_categorical(trainY, num_classes)
testY = tensorflow.keras.utils.to_categorical(testY, num_classes)
# 2. 通过Keras的API定义卷积神经网络
# 使用Keras API定义模型。
model = Sequential()
model.add(Conv2D(32, kernel_size=(5, 5), activation='relu', input_shape=input_shape))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, (5, 5), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(500, activation='relu'))
model.add(Dense(num_classes, activation='softmax'))

# 定义损失函数、优化函数和评测方法。
model.compile(loss=tensorflow.keras.losses.categorical_crossentropy,
              optimizer=tensorflow.keras.optimizers.SGD(),
              metrics=['accuracy'])

# 3. 通过Keras的API训练模型并计算在测试数据上的准确率
model.fit(trainX, trainY,
          batch_size=128,
          epochs=10,
          validation_data=(testX, testY))

# 在测试数据上计算准确率。
score = model.evaluate(testX, testY)
print('Test loss:', score[0])
print('Test accuracy:', score[1])

执行训练代码:

耐心等待下载MNIST数据集,然后开始加载参数:

进行训练:

经过了几轮训练,准确率提高到了0.9821,loss降低到了0.0597左右。

(未完待续)

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。