科大讯飞提前批算法工程师面经分享

问题1:Pytorch和Tensorflow的区别?

图创建

创建和运行计算图可能是两个框架最不同的地方。

在pyTorch中,图结构是动态的,这意味着图在运行时构建。

而在TensorFlow中,图结构是静态的,这意味着图先被“编译”然后再运行。

pyTorch中简单的图结构更容易理解,更重要的是,还更容易调试。调试pyTorch代码就像调试Python代码一样。你可以使用pdb并在任何地方设置断点。调试tensorFlow代码可不容易。要么得从会话请求要检查的变量,要么学会使用tensorFlow的调试器。

灵活性

pytorch:动态计算图,数据参数在CPU与GPU之间迁移十分灵活,调试简便;

tensorflow:静态计算图,数据参数在CPU与GPU之间迁移麻烦,调试麻烦。

设备管理

pytorch:需要明确启用的设备

tensorflow:不需要手动调整,简单


课程将直接从深度学习入手,从基础的目标识别与检测,过渡到关键点检测之人体骨骼检测,再一步步过渡到人脸特征点检测、手部关键点检测、3D物体关键点检测和图卷积网络。沿着深度学习的脚步,一步一步向下过渡,探索其关联,由浅入深、快速掌握。

问题2:leetcode爬楼梯(dp,递归等方法)

递归解法:

动态规划解法:

问题3:torch.eval()的作用

对BN的影响:

对于BN,训练时通常采用mini-batch,所以每一批中的mean和std大致是相同的;而测试阶段往往是单个图像的输入,不存在mini-batch的概念。所以将model改为eval模式后,BN的参数固定,并采用之前训练好的全局的mean和std;总结就是使用全局固定的BN。

对dropout的影响:

训练阶段,隐含层神经元先乘概率P,再进行激活;而测试阶段,神经元先激活,每个隐含层神经元的输出再乘概率P,总结来说就是顺序不同!

问题4:PCA是什么?实现过程是什么,意义是什么?

主成分分析 (PCA, principal component analysis)是一种数学降维方法, 利用正交变换 (orthogonal transformation)把一系列可能线性相关的变量转换为一组线性不相关的新变量,也称为主成分,从而利用新变量在更小的维度下展示数据的特征。

实现过程:一种是基于特征值分解协方差矩阵实现PCA算法,一种是基于SVD分解协方差矩阵实现PCA算法。

意义:使得数据集更易使用;降低算法的计算开销;去除噪声;使得结果容易理解。

问题5:简述K-means.

K-means算法的基本思想是:以空间中k个点为中心进行聚类,对最靠近他们的对象归类。通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果。

假设要把样本集分为k个类别,算法描述如下:

(1)适当选择k个类的初始中心,最初一般为随机选取;

(2)在每次迭代中,对任意一个样本,分别求其到k个中心的欧式距离,将该样本归到距离最短的中心所在的类;

(3)利用均值方法更新该k个类的中心的值;

(4)对于所有的k个聚类中心,重复(2)(3),类的中心值的移动距离满足一定条件时,则迭代结束,完成分类。

Kmeans聚类算法原理简单,效果也依赖于k值和类中初始点的选择。


课程将直接从深度学习入手,从基础的目标识别与检测,过渡到关键点检测之人体骨骼检测,再一步步过渡到人脸特征点检测、手部关键点检测、3D物体关键点检测和图卷积网络。沿着深度学习的脚步,一步一步向下过渡,探索其关联,由浅入深、快速掌握。

经验分享 程序员 微信小程序 职场和发展