训练
一个网络的三要素:结构、算法、权值
网络模型一旦选定,三要素中结构和算法就确定了,接下来要对权值进行调整。
神经网络是将一组训练集(training set)送入网络,根据网络的实际输出与期望输出间的差别来调整权值。
训练模型的步骤:
- 选择样本集合的一个样本(Ai Bi) (数据 标签)
- 送入网络,计算网络的实际输出Y(此时网络中的权重都是随机的)
- 计算D=Bi -Y(预测值与实际值的差)
- 根据误差D调整权值矩阵W
- 对每个样本重复上述过程,直到对整个样本集来说,误差不超过规定范围。
使用
神经网络框架
Caffe是一种开源的软件框架,利用这套框架,我们可以实现新的网络、修改已有的神经网络、训练网络、编写网络使用。
实现新的网络
1 数据打包
2 编写网络结构文件
3 编写网络求解文件
4 开始训练
caffe的文件结构
data 用于存放下载的训练数据
例如安装后会有 mnist ilsvrc12 cifar10
docs example 使用的帮助文档和代码样例
使用与部署
直接使用caffe神经网络框架比较复杂,可以使用NVIDIA推出的DIGIST可视化工具进行网络的训练。
TensorRT 网络框架 采取“”精度换速度“”的策略,在精度无明显下降的前提下,其对inference的加速明显,往往有1倍以上的性能提升,它能根据prototxt文件和caffemodel权值,转化为支持半精度的新的模型。其工作流程:
- 构建:构建一个网络、进行优化
- 执行:引擎运行推理任务
使用TensorRT部署神经网络
训练对于深度学习来说是为了获得一个性能优异的模型,其主要的关注点在于模型的准确度等指标。推理则不一样,其没有了训练中的反向迭代过程,是针对新的数据进行预测,而我们日常生活中使用的AI服务都是推理服务。相较于训练,推理的关注点不一样,从而也给现在有技术带来了新的挑战:
推理 需求 | 现有框架的局限性 | 影响 |
---|---|---|
高吞吐率 | 无法处理大量和高速的数据 | 增加了单次推理的开销 |
低响应时间 | 应用无法提供实时的结果 | 损害了用户体验(语音识别、个性化推荐和实时目标检测) |
高效的功耗以及显存消耗控制 | 非最优效能 | 增加了推理的开销甚至无法进行推理部署 |
专业部署级别的解决方案 | 非专用于部署使用 | 框架复杂度和配置增加了部署难度以及生产率 |
推理更关注的是高吞吐率、低响应时间、低资源消耗以及简便的部署流程,而TensorRT就是用来解决推理所带来的挑战以及影响的部署级的解决方案。