acc开头是什么车的函数有几个



第一步: 找出核心知识点并解析


  • 3批次化数据载入模型
  • 4,对损失函数进行优化计算损失与梯度
  • 5梯度在反向传播中更新模型参数
  • 6,按照以上过程迭代所有数据获得模型参数

苐二步: 整合核心知识点形成答案

1BERT模型训练数据预处理,包括数值映射截断补齐,以及为句子对添加标记等
2初始化BERT模型参数,即初始囮各个Transformer中的带参数层一般按照均匀分布方式初始化
3,将数据使用迭代器批次化以节约内存载入模型
4,对BERT的交叉熵损失函数进行优化获嘚每个批次的平均损失与梯度
5使用梯度在反向传播算法中更新模型所有的层参数
6,按照以上过程迭代所有数据获得模型参数


第一步: 找出核心知识点并解析


  • 大型模型在推断过程中的优化措施:
    • 1对训练完成的模型进行量化,包括动态量化和静态量化
    • 2对训练完成的模型进行剪枝
  • 4,拓展硬件资源使用分布式或GPU加速

第二步: 整合核心知识点形成答案

在我们的项目中,对训练后的BERT模型采用动态量化技术来优化推断性能将模型参数由FLOAT32量化为INT8,理论上参数量大小减少4倍实际工程中减小约3.5倍(由420M到120M),单条数据的平均推断时间由原来的380ms减小到85ms当然,模型茬验证集上的acc指标也下降了约两个百分点这是在可接受范围之内的。(动态量化是最简单方便的推断性能优化方法)


第一步: 找出核心知識点并解析


  • 大型模型在训练过程中的优化措施:
    • 1数据并行(分布式)训练
    • 2,模型并行(分布式)训练
    • 3数据与模型混合并行(分布式)训練

第二步: 整合核心知识点形成答案

在我们训练BERT模型的过程中,为了能够迭代调优方法我们使用了数据并行的方式来加快训练。我们将模型copy到4台服务器上然后使用将每个批次的数据4等分feed给模型处理,之后将每个模型的梯度在主节点上进行求和平均得到最终的更新梯度通過这种方式,我们将模型的训练速度提升了约3.5倍在10万文本数据集上训练的时间由原来的2h38min,减小到45min左右为我们的整个模型从实验到上线節约了大量时间。

}

此处以手写数字图像分类为例使用 MNIST 数据集,包含 60 000 张训练图像和 10 000 张测试图像图像大小为 28*28。

训练集 包括:6万张存储在变量train_images中的图像样本(大小为(6))和6万个存储在变量train_labels中的樣本标签(大小为(60000,)
测试集 包括:1万张存储在变量test_images中的图像样本(大小为(1))和6万个存储在变量test_labels中的样本标签(大小为(10000, ))。

神经网络的核惢组件是 层(layer)它是一种数据处理模块,你可以将它看成数据过滤器进去一些数据,出来的数据变得更加有用具体来说,层从输入數据中提取 表示——我们期望这种表示有助于解决手头的问题
个人理解:通过改变数据的表达形式,使得混杂在一起的数据分离易於区分。同时通过层层变化,使得抽象的内容变得简单清晰方便电脑理解识别。)

上述代码中的网络包含 2 个 Dense 层它们是 密集连接(也叫 全连接)的神经层。第二层(也是最后一层)是一个 10 路 softmax 层它将返回一个由 10 个概率值(总和为 1)组成的数组。每个概率值表示当前数字圖像属于 10 个数字类别中某一个的概率

此处选用多分类交叉熵损失函数和RMSprop优化器(可添加动量),以变量accuracy中存储的精确度为指标


  

在开始訓练之前,要对数据进行 预处理将其变换为网络要求的形状,并缩放到所有值都在 [0, 1] 区间

因为数据将输入到大小512的全连接层中,所以需偠将二维图像变换为一维数列同时对数据 标准化。原始数据为unit 8数组为确保标准化后的数据精度,此处将数据存储在float 32数组中

最后调用網络中的fit()方法,拟合(fit) 模型


  

训练过程中显示了两个数字:一个是网络在训练数据上的 损失(loss),另一个是网络在训练数据上的 精度(acc)本例中,训练集精度可以达到0.989(98.9%)预测集精度只有 97.8%,这是由于 过拟合(overfit) 造成的
(就像做题,同样的考点盯着几种题型多刷几遍,准确率就上去了换一个题型考法,准确率就会低一些)

2.2 神经网络的数据表示

前面例子使用的数据存储在多维Numpy数组中,也叫 张量(tensor)张量是矩阵向任意维度的推广[注意,张量的 维度(dimension) 通常叫作 轴(axis)

仅包含一个数字的张量叫作 标量(scalar,也叫标量张量、零维张量、0D 张量)在 Numpy中,一个float32float64的数字就是一个标量张量(或标量数组)可以用ndim 属性 来查看一个 Numpy 张量的轴的个数。标量张量有 0 个轴(ndim == 0)张量轴的个数也叫作 阶(rank)

0

数字组成的数组叫作 向量(vector)一维张量(1D 张量)一维张量只有一个轴。


  

向量组成的数组叫作 矩阵(matrix)二維张量(2D 张量)矩阵有 2 个轴(通常叫作行和列)。


  

第一个轴(0 轴)上的元素叫作 行(row)第二个轴(1 轴)上的元素叫作 列(column)

3D 张量由哆个2D 张量沿第三个轴(2 轴深度)堆叠形成,可以想象成一个立方体


  

张量是由三个关键 属性 来定义的:轴的个数形状数据类型

利鼡 Matplotlib 库(Python 标准科学套件的一部分)来显示这个 3D 张量中的第 4 个数字:

在前面的例子中,使用语法train_images[i]来选择沿着第一个轴的特定数字选
择张量的特定元素叫作 张量切片(tensor slicing)。下面代码在所有图像的右下角选出 14 像素×14 像素的区域:

2.2.7 数据批量的概念

通常来说深度学习中所有数据张量嘚第一个轴(0 轴,因为索引从 0 开始)都是 样本轴(samples axis有时也叫 样本维度)。

此外深度学习模型不会同时处理整个数据集,而是将数据拆汾成小批量之前的例子的批量大小batch_size=128。对于这种批量张量第一个轴(0 轴)叫作 批量轴(batch axis)或 批量维度(batch dimension)

2.2.8 现实世界中的数据张量

2.3 神经网絡的“齿轮”:张量运算

Relu 运算加法 都是逐元素(element-wise)的运算,即该运算独立地应用于张量中的每个元素也就是说,这些运算非常适合大規模并行实现(向量化实现这一术语来自于 1970—1990 年间向量处理器超级计算机架构)。

当两个形状不同的张量相加时如果没有歧义的话,較小的张量会被 广播(broadcast)以匹配较大张量的形状。具体步骤:

(1) 向较小的张量添加轴(叫作广播轴)使其ndim与较大的张量相同。
(2) 将较小的張量沿着新轴重复使其形状与较大的张量相同。

张量点积运算和矩阵电机运算类似用函数np.dot()或者点积运算符.表示。

利用方法reshape()可以改变张量的形状


  

使用方法transpose()对张量进行 转置变换,这个比较复杂需要添加转置轴的相关参数。

2.3.5 张量运算的几何解释

对于张量运算所操作的张量其元素可以被解释为某种几何空间内点的坐标。张量运算改变了张量在几何空间中的形状和位置仿射变换、旋转、缩放等基本的几何操作都可以表示为张量运算。

2.3.6 深度学习的几何解释

神经网络完全由一系列张量运算组成而这些张量运算都只是输入数据的几何变换。因此你可以将神经网络解释为高维空间中非常复杂的几何变换,这种变换可以通过许多简单的步骤来实现

对于三维的情况,下面这个思維图像是很有用的想象有两张彩纸:一张红色,一张蓝色将其中一张纸放在另一张上。现在将两张纸一起揉成小球这个皱巴巴的纸浗就是你的 输入数据,每张纸对应于分类问题中的一个 类别神经网络(或者任何机器学习模型)要做的就是找到可以让纸球恢复平整的變换,从而能够再次让两个类别明确可分 通过深度学习,这一过程可以用三维空间中一系列简单的变换来实现比如你用手指对纸球做嘚变换,每次做一个动作

2.4 神经网络的“引擎”:基于梯度的优化

在之前的代码中,第一层对输入做了如下操作

其中wb都是张量,均为該层的属性它们被称为该层的 权重(weight)或 可训练参数(trainable parameter),分别对应 kernel 和 bias 属性(卷积核和偏置)这些权重包含网络从观察训练数据中学箌的信息。

一开始这些权重矩阵取较小的随机值,这一步叫作 随机初始化(random initialization)下一步则是根据反馈信号逐渐调节这些权重这个逐渐调節的过程叫作 训练,也就是机器学习中的学习

上述过程发生在一个 训练循环(training loop)内,其具体过程如下:

(1) 抽取训练样本 x 和对应目标 y 组成的數据批量
(3) 计算网络在这批数据上的损失,用于衡量 y_pred 和 y 之间的距离
(4) 更新网络的所有权重,使网络在这批数据上的损失略微下降

2.4.2 张量运算的导数:梯度

梯度(gradient)是张量运算的导数。它是导数这一概念向多元函数导数的推广多元函数是以张量作为输入的函数。

给定一个可微函数理论上可以用解析法找到它的最小值,但对于实际的神经网络是无法求解的因为参数的个数不会少于几千个,而且经常有上千萬个

(1) 抽取训练样本 x 和对应目标 y 组成的数据批量。
(3) 计算网络在这批数据上的损失用于衡量 y_pred 和 y 之间的距离。
(4) 计算损失相对于网络参数的梯喥[一次反向传播(backward pass)]
(5) 将参数沿着梯度的反方向移动一点,比如 w -= step * gradient从而使这批数据上的损失减小一点。

小批量 SGD 算法的一个变体是每次迭代时只抽取一个样本和目标而不是抽取一批数据。这叫作 真 SGD(有别于小批量 SGD)还有另一种极端,每一次迭代都在所有数据上运行這叫作 批量 SGD。这样做的话每次更新都更加准确,但计算代价也高得多这两个极端之间的有效折中则是选择合理的批量大小。

此外SGD 还囿多种变体,其区别在于计算下一次权重更新时还要考虑上一次权重更新而不是仅仅考虑当前梯度值,比如 带动量的 SGDAdagradRMSProp 等变体这些變体被称为 优化方法(optimization method)或 优化器(optimizer)。其中动量的概念尤其值得关注它在许多变体中都有应用。动量 解决了 SGD 的两个问题:收敛速度局部极小点

方法可以避免这样的问题,这一方法的灵感来源于物理学有一种有用的思维图像,就是将优化过程想象成一个小球从损失函数曲线上滚下来如果小球的动量足够大,那么它不会卡在峡谷里最终会到达全局最小点。动量方法的实现过程是每一步都移动小球不仅要考虑当前的斜率值(当前的加速度),还要考虑当前的速度(来自于之前的加速度)这在实践中的是指,更新参数 w 不仅要考虑 當前的梯度值还要考虑 上一次的参数更新,其简单实现如下所示

2.4.4 链式求导:反向传播算法

根据微积分的知识,可以推导(f(g(x)))' = f'(g(x)) * g'(x)这称为 链式法则(chain rule)。将链式法则应用于神经网络梯度值的计算得到的算法叫作 反向传播(backpropagation,有时也叫 反式微分reverse-mode differentiation)。反向传播从最终损失值开始从最顶层反向作用至最底层,利用链式法则计算每个参数对损失值的贡献大小

2.5 回顾第一个例子

回顾之前的例子,我们会明白:
2、权重張量 是层的属性里面保存了网络所学到的 知识(knowledge)。
信号在训练阶段应使它最小化。
4、减小损失是通过小批量随机梯度下降来实现的具体在于选择什么样的优化器
5、明白在调用fit时发生了什么:网络开始在训练数据上进行 迭代(每个小 批量包含128 个样本)共迭代 5 次[茬所有训练数据上迭代一次叫作一个 轮次(epoch)]。在每次迭代过程中网络会计算批量损失相对于权重的梯度,并相应地 更新权重5 轮之後,网络进行了2345 次梯度更新(每轮 469 次8.75),网络损失值将变得足够小使得网络能够以很高的精度对手写数字进行分类。

}

ACC全称Adaptive Cruise Control国内译作自适应巡航,近期更是以“自动驾驶前夜”之名被许多媒体炒的火热

就目前来讲,真正意义上的自动驾驶走入消费市场尚且遥遥无期但ACC技术的应用却鈳以让驾驶员提前一窥无人驾驶的端倪。在系统开启后车辆可以按照设定的跟车距离进行行驶,通过不断调整车速来维持两车之间的距離在此期间驾驶员仍需要双手握住方向盘,除非出现紧急情况否则不需要对车辆进行干预。

一般情况下ACC技术利用车身传感器(雷达、摄像头等传感器)检测自车与前方车辆的距离和相对速度,并控制自身车速和前车保持固定的距离这其中涉及到发动机管理系统 EMS、自動变速箱控制器TCU、电子稳定程序 ESP 以及电子驻车EPB的主动介入,还涉及到更复杂的人机交互和雷达、摄像头等外部传感器的管控

虽然难度加夶,但它对驾驶体验的提升效果也是十分明显比如超智越级SUV EXEED星途LX搭载的0—180km/h的全速自适应巡航,无论在市区通勤还是在高速公路上都可鉯大幅缓解人的紧张情绪,减缓手、脚负担让驾驶变得更轻松。

}

我要回帖

更多关于 acc开头是什么车 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信