摘 要

卷积神经网络是近年来人工智能领域取得重大突破的一种重要手段,给出了图像识别、语音识别和自然语言处理领域中关键问题的优化解决方案,尤其适合处理图像方面的任务,如人脸识别和手写体识别。手写数字识别是用卷积神经网络解决的经典问题,采用一般方法训练出来的神经网络达到了97%的识别率,几乎与人类的识别精度一致,但在执行速度上没有人类识别得快。在实际商业应用中不可避免地会遇到数据量过大的问题,如在手写数字识别中有60000条规格为28*28单位像素的训练样本需要训练,这样会导致执行速度较慢,CPU在处理这样包含大量高精度浮点数的任务时,其消耗的时间是不可接受的,在训练期要花费数小时的时间。

针对上述问题,该文将构建基于CUDA架构的编程环境,采用CUDA/C++编程实现卷积神经网络算法,将卷积神经网络算法应用于手写数字识别问题中,在选择合适的网络模型和相关参数的情况下,利用GPU的高度并发性能,提高卷积神经网络训练数据的速度。通过对GPU实现和CPU实现进行对比实验,验证对卷积神经网络算法进行CUDA并行化训练和识别是可行有效的,实验表明在普通PC机上采用GPU实现的卷积神经网络算法比CPU实现的卷积神经网络算法虽然在准确率上仅提升了0.29%,但在速度上加快了15%。

关键词:CUDA,卷积神经网络,深度学习,并行计算

ABSTRACT

Convolutional neural network is a major breakthrough in the field of artificial intelligence in recent years, an important means of image recognition given to optimize speech recognition and natural language processing solutions, especially for process images tasks, such as human face recognition and handwriting recognition. Handwritten numeral recognition is a classic problem with the convolutional neural network to solve, using the general method of trained neural network reaches 97% recognition rate, with almost the same human recognition accuracy, but the speed of execution without human recognition quickly. In practical commercial applications will inevitably encounter the problem of data overload, as there are 60,000 training sample size is 28 * 28 pixel units need to be trained in digital handwriting recognition, this will result in slower performance, CPU in when processing tasks such contains a lot of high-precision floating-point number, the elapsed time is unacceptable, in the training period to spend a few hours.

To solve these problems, this paper will build a CUDA architecture-based programming environment using CUDA / C ++ programming to implement the convolution neural network algorithm. The convolution neural network algorithm is applied to handwritten numeral recognition problem. After selecting an appropriate network model and related parameters, the use of highly concurrent GPU performance,convolution neural network training to improve the speed of data. Then use the model to achieve the GPU and CPU to complete some comparative tests to verify the fact that using the CUDA to parallel implementing convolution neural network algorithm for training and recognition is feasible and effective,experiments show that on the common PC the neural network algorithm convolution convolution neural network algorithm to achieve GPU than CPU implementations on the speed by 15%, on the accuracy improved 0.29%.

Key words:CUDA, CNN, Deep Learning, Parallel Computing

源码下载地址:https://www.write-bug.com/article/1773.html

基于CUDA的卷积神经网络算法实现相关推荐

  1. 卷积神经网络图像识别_[源码和文档分享]基于CUDA的卷积神经网络算法实现

    摘 要 卷积神经网络是近年来人工智能领域取得重大突破的一种重要手段,给出了图像识别.语音识别和自然语言处理领域中关键问题的优化解决方案,尤其适合处理图像方面的任务,如人脸识别和手写体识别.手写数字识别 ...

  2. CV之CNN:基于tensorflow框架采用CNN(改进的AlexNet,训练/评估/推理)卷积神经网络算法实现猫狗图像分类识别

    CV之CNN:基于tensorflow框架采用CNN(改进的AlexNet,训练/评估/推理)卷积神经网络算法实现猫狗图像分类识别 目录 基于tensorflow框架采用CNN(改进的AlexNet, ...

  3. DL之CNN:利用卷积神经网络算法(2→2,基于Keras的API-Functional)利用MNIST(手写数字图片识别)数据集实现多分类预测

    DL之CNN:利用卷积神经网络算法(2→2,基于Keras的API-Functional)利用MNIST(手写数字图片识别)数据集实现多分类预测 目录 输出结果 设计思路 核心代码 输出结果 下边两张 ...

  4. DL之CNN:利用卷积神经网络算法(2→2,基于Keras的API-Sequential)利用MNIST(手写数字图片识别)数据集实现多分类预测

    DL之CNN:利用卷积神经网络算法(2→2,基于Keras的API-Sequential)利用MNIST(手写数字图片识别)数据集实现多分类预测 目录 输出结果 设计思路 核心代码 输出结果 1.10 ...

  5. CV之IC之AlexNet:基于tensorflow框架采用CNN卷积神经网络算法(改进的AlexNet,训练/评估/推理)实现猫狗分类识别案例应用

    CV之IC之AlexNet:基于tensorflow框架采用CNN卷积神经网络算法(改进的AlexNet,训练/评估/推理)实现猫狗分类识别案例应用 目录 基于tensorflow框架采用CNN(改进 ...

  6. GCN-图卷积神经网络算法简单实现(含python代码)

    本文是就实现GCN算法模型进行的代码介绍,上一篇文章是GCN算法的原理和模型介绍. 代码中用到的Cora数据集: 链接:https://pan.baidu.com/s/1SbqIOtysKqHKZ7C ...

  7. 基于Keras的卷积神经网络(CNN)可视化

    基于Keras的卷积神经网络(CNN)可视化 标签(空格分隔): 深度学习 卷积神经网络可视化 本文整理自Deep Learning with Python,书本上完整的代码在 这里的5.4节,并陪有 ...

  8. 论文浅尝 | 基于注意力图卷积神经网络的依存驱动关系抽取

    笔记整理:王大壮 论文链接:https://aclanthology.org/2021.acl-long.344.pdf 动机 句法信息,特别是依存树,已经被广泛应用于关系提取,以更好地分析与给定实体 ...

  9. 基于tensorflow和卷积神经网络的电影推荐系统的实现

    基于tensorflow和卷积神经网络的电影推荐系统的实现 一. 数据处理 1. MovieLens数据集 2. 处理后的数据 二. 建模&训练 1. 嵌入层 2. 文本卷积层 3. 全连接层 ...

最新文章

  1. windows下sqlite3的基本操作
  2. c 多线程mysql_多线程读写mysql数据库
  3. 华南理工大学网络教育计算机答案,计算机电路基础·随堂练习2019春华南理工大学网络教育答案.doc...
  4. mime类型是什么 node_Node.js - 文件系统获取文件类型
  5. 协作安装程序应用一例
  6. 想在创建虚拟机的时候指定ip调研
  7. 无法获取未定义或 null 引用的属性“text”_【CSS】是时候开始用 CSS 自定义属性了...
  8. 离合器预减振超载造成变速箱怠速异响matlab与python仿真分析
  9. beginnersbook C 语言教程·翻译完成 | ApacheCN
  10. System.Web.Helpers.Json 与 Newtonsoft.Json 的性能对比
  11. CentOS 6.5静态IP的设置(NAT和桥接联网方式都适用)
  12. nvidia-smi 重置GPU
  13. 学习日记——W25Q64 FLASH—QSPI
  14. 攻击日志分析 中职网络安全
  15. 学习微信开发公众号的第一天(根据文字自动回复文字)
  16. DPDK初始化hugepages
  17. civil3D地形导入AIW(设置投影坐标系)
  18. xml文件格式化脚本
  19. 实现两个主机之间的密钥分发和安全传输
  20. 一个接口多个实现类的Spring注入方式(注解方式)

热门文章

  1. 工程总承包(EPC)高级项目经理,未来可期!
  2. python通过键盘方向键移动_平滑地通过键盘移动角色示例.py
  3. h5开发必备之切图工具cutterman
  4. MATLAB代码实现钻孔地震波波场模拟
  5. Springboot综合案例锦集
  6. [趣谈网络协议学习] 08 世界这么大,我想出网关:欧洲十国游与玄奘西行
  7. 未来MCU设计的几个方向
  8. 夜莺监控( Nightingale ),看这一篇就够了。(介绍、部署、配置、优化、自定义)
  9. 1. Synchronized
  10. 如何将excel的一列变成多列(多排表使用帮助)