0%

AI算法工程师--小测试1

自动摘要: 编程语言: 1.解释下封装、继承和多态? 2.python装饰器的本质是什么? 项目理解: 3.列举傅里叶变换在图像处理中的作用(如图像压缩)? 4.BN层一般放在什么 ……..

编程语言:

  1. 解释下封装、继承和多态?
  2. python装饰器的本质是什么?

项目理解:

  1. 列举傅里叶变换在图像处理中的作用(如图像压缩)?
  2. BN层一般放在什么层之后?有什么规律?
  3. 局部池化与全局池化区别?

附加题:

  1. 谈一谈现今人工智能落地的方式的优缺点(包括离线方式,在线方式)。
  2. AI编译器与传统编译器的区别。
  3. 亚里士多德说过”学术源于惊奇”,能否说下你的哪个AI项目来源于”惊奇”。

参考答案:

原则上:能答出3条即合格。

编程语言:

  1. 解释下封装、继承和多态?
    1. 一、封装:
      1. 封装是实现面向对象程序设计的第一步,封装就是将数据或函数等集合在一个个的单元中(我们称之为类)。
      2. 封装的意义在于保护或者防止代码(数据)被我们无意中破坏。
    2. 二、继承:
      1. 继承主要实现重用代码,节省开发时间。子类可以继承父类的一些东西
    3. 三、多态
      1. 多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。
  2. python装饰器的本质是什么?
    1. Python的装饰器本质上是一个嵌套函数,它接受被装饰的函数(func)作为参数,并返回一个包装过的函数。这样我们可以在不改变被装饰函数的代码的情况下给被装饰函数或程序添加新的功能。

项目理解:

  1. 列举傅里叶变换在图像处理中的作用?
    1. 图像增强;
    2. 图像去噪;
    3. 边缘检测;
    4. 图像特征提取;
    5. 等等;
  2. BN层一般放在什么层之后?有什么规律?
    1. BN是将feature map 标准化为在0 附近,一般在卷积层或者pooling层之后,激活函数之前,因为有些常用激活函数在0附近变化率最大,BN之后,特征图经过激活函数,比如sigmoid,被映射到新的特征空间,由于激活函数在0附近变化率大,因此被映射到新的特征空间的特征图也更容易被区别开来,这样既帮助了分类,也同时缓解了梯度消失问题。
  3. 局部池化与全局池化区别
    1. 局部池化主要还是为了增大卷积核的感受野,我们需要把一块区域内的信息集中起来,相当于对图像做了一个下采样。这个时候有两种保留原来图像信息的方式,一种是取均值、一种是取最大值。对于这种小范围的局部池化有最大池化保留纹理信息,平均池化保留总体信息这种概念。
    2. 全局池化之后,特征图每个channel都被压缩到了一个点,这实际上是对每个channel做了一个信息压缩。一般都是对所有的点都做了操作,这样我们很难说还是像局部池化一样重视纹理和背景信息。因为信息损失的太大了;而且本身的目的不太一样,局部池化是通道内的,主要是压缩一个通道里面一个patch的信息。而全局池化是通道间的。综上,就目的来说。全局池化更重视比较通道间的关系,而不是一个通道里面的纹理与背景信息。

欢迎关注我的其它发布渠道