当前位置:网站首页>Ascend 910实现Tensorflow1.15实现LeNet网络的minist手写数字识别
Ascend 910实现Tensorflow1.15实现LeNet网络的minist手写数字识别
2022-07-07 12:35:00 【华为云】
一、环境及准备工作
CPU/GPU复现使用华为云ModelArts-CodeLab平台
Ascend复现使用华为云ModelArts-开发环境-Notebook
原始Lenet代码链接:https://gitee.com/lai-pengfei/LeNet
二、在CPU/GPU中运行原始代码
第一步:打开CodeLab
注:如果需要切换GPU资源,可以点
资源选择GPU资源,可以使用1小时,1小时候需要手动续时
点击页面中的Terminal进入终端界面:
终端界面:
第二步:进入到work目录并git clone 相关代码
git clone https://gitee.com/lai-pengfei/LeNet
可以看到左面有git下来的代码了
第三步:切换TensorFlow运行环境
source activate /home/ma-user/anaconda3/envs/TensorFlow-1.13.1/
这里是1.13的,但是问题不大,大差不差,也可以跑和1.15差不多
第四步:进入文件夹并执行原始代码
cd cd LeNet/python Train.py
运行中:
运行结果:
三、模型移植
环境使用华为云-开发环境Notebook
创建环境
镜像选择勾选的
规格等设置如下图:
环境及代码下载参考CPU/GPU
切换到Ascend下的TensorFlow 1.15运行环境
source activate /home/ma-user/anaconda3/envs/TensorFlow-1.15.0/
代码修改
根据文档修改原始代码中的Train.py
文档地址:https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/51RC2alpha007/moddevg/tfmigr/atlasmprtg_13_0011.html
添加引入包的代码:
from npu_bridge.npu_init import *
修改创建session并初始化资源相关代码
这一步主要在sess.run(tf.initialize_all_variables())前添加以下几行代码
config = tf.ConfigProto()custom_op = config.graph_options.rewrite_options.custom_optimizers.add()custom_op.name = "NpuOptimizer"config.graph_options.rewrite_options.remapping = RewriterConfig.OFF # 必须显式关闭config.graph_options.rewrite_options.memory_optimization = RewriterConfig.OFF # 必须显式关闭sess = tf.Session(config=config)
这个Demo还需要改一下第一行相关库代码
原始代码:
import tensorflow.examples.tutorials.mnist.input_data as input_data
修改为:
from tensorflow.examples.tutorials.mnist import input_data
运行代码
python Train.py
看到W tf_adapt差不多字样就说明调用到了NPU资源
运行过程:
可以开启另一个Terminal查看是否真的使用了Ascend,在新的Terminal中使用如下命令:
npu-smi info
运行结果:
总结
到这里整个简单的TensorFlow移植Ascend平台运行的代码修改就完成了,其实整个过程算是比较简单的,会者不难,不会可能会觉得很难。模型迁移的话主要难点在可能存在有些算子不支持以及精度性能优化部分。
边栏推荐
- Common response status codes
- Pert diagram (engineering network diagram)
- Codes de non - retour à zéro inversés, codes Manchester et codes Manchester différentiels couramment utilisés pour le codage des signaux numériques
- Bashrc and profile
- 【AI实战】应用xgboost.XGBRegressor搭建空气质量预测模型(二)
- NLLB-200:Meta开源新模型,可互译200种语言
- [untitled]
- 【立体匹配论文阅读】【三】INTS
- Clickhouse (03) how to install and deploy Clickhouse
- 通过 iValueConverter 给datagrid 的背景颜色 动态赋值
猜你喜欢
设备故障预测机床故障提前预警机械设备振动监测机床故障预警CNC震动无线监控设备异常提前预警
用例图
MRS离线数据分析:通过Flink作业处理OBS数据
OAuth 2.0 + JWT 保护API安全
GAN发明者Ian Goodfellow正式加入DeepMind,任Research Scientist
LeetCode 648. Word replacement
Horizontal of libsgm_ path_ Interpretation of aggregation program
通过 iValueConverter 给datagrid 的背景颜色 动态赋值
使用day.js让时间 (显示为几分钟前 几小时前 几天前 几个月前 )
libSGM的horizontal_path_aggregation程序解读
随机推荐
最长上升子序列模型 AcWing 1014. 登山
Laravel5 call to undefined function openssl cipher iv length() 报错 PHP7开启OpenSSL扩展失败
CSMA/CD 载波监听多点接入/碰撞检测协议
Million data document access of course design
LeetCode每日一题(636. Exclusive Time of Functions)
C # switch pages through frame and page
gvim【三】【_vimrc配置】
常用數字信號編碼之反向不歸零碼碼、曼徹斯特編碼、差分曼徹斯特編碼
Excuse me, does PTS have a good plan for database pressure measurement?
wpf dataGrid 实现单行某个数据变化 ui 界面随之响应
【立体匹配论文阅读】【三】INTS
requires php ~7.1 -> your PHP version (7.0.18) does not satisfy that requirement
PERT图(工程网络图)
3D Detection: 3D Box和点云 快速可视化
JS get the current time, month, day, year, and the uniapp location applet opens the map to select the location
Excuse me, why is it that there are no consumption messages in redis and they are all piled up in redis? Cerely is used.
Leetcode——236. The nearest common ancestor of binary tree
Attribute keywords aliases, calculated, cardinality, ClientName
多商户商城系统功能拆解01讲-产品架构
How does MySQL control the number of replace?