赞
踩
可以把训练(training)类比成在学校中学习。神经网络和大多数人一样——为了完成一项工作,需要接受教育。经过训练(training)的神经网络可以将其所学应用于数字世界的任务——例如:识别图像、口语词、血液疾病,或者向某人推荐她/他接下来可能要购买的鞋子等各种各样的应用。这种更快更高效的版本的神经网络可以基于其训练成果对其所获得的新数据进行「推导」,在人工智能领域,这个过程被成为“推理(inference)”。
打个比方,你现在想要训练一个能区分苹果还是橘子的模型,你需要搜索一些苹果和橘子的图片,这些图片放在一起称为训练数据集(training dataset),训练数据集是有标签的,苹果图片的标签就是苹果,橘子亦然。一个初始神经网络通过不断的优化自身参数,来让自己变得准确,可能开始10张苹果的照片,只有5张被网络认为是苹果,另外5张认错了,这个时候通过优化参数,让另外5张错的也变成对的。这整个过程就称之为训练(Traning)。
你训练好了一个模型,在训练数据集中表现良好,但是我们的期望是它可以对以前没看过的图片进行识别。你重新拍一张图片扔进网络让网络做判断,这种图片就叫做现场数据(live data),如果现场数据的区分准确率非常高,那么证明你的网络训练的是非常好的。我们把训练好的模型拿出来实际应用的过程,称为推理(Inference)。
训练是集中计算;推理是怎么工作的,将训练成果投入使用的过程;
没有训练,就不可能会有推理。
所以,一般会把AI分解成训练和推理两个过程。
创建数据集:
开源数据集很多,种类繁多,比如医学、语意分割、图像分类、垃圾分类、目标跟踪、自动驾驶、卫星图像、农业等等。【https://zhuanlan.zhihu.com/p/660617865】
加载数据集:
数据预处理:
为了使原始数据更适合模型训练,需要进行一系列预处理,比如在图像数据中常见的预处理操作包括尺寸调整、裁剪、旋转、翻转、归一化等。
创建神经网络模型:
创建损失函数:
设置优化器:
设置训练网络的超参数:
开始训练并记录训练结果:
保存训练后的模型:
模型 | 公司 | 应用场景 |
---|---|---|
onnxruntime | 微软 | onnx的原生推理框架,通用性好 |
TensorRT | Nvidia | 与Nvidia的GPU结合的最好 |
OpenVIVO | Intel | 针对Intel平台优化最大 |
Tengine | OPEN AI LAB | 边缘设备端 |
ncnn | 腾讯 | 移动设备端 |
mnn | 阿里 | 移动设备端 |
tflite | 移动设备端 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。