面试问题汇总

1、共享屏幕写项目的某一模块的代码(在本地IDE写了伪代码)

2、numpy列表(一维数组)中,选出大于某个值的元素(没留意到说的是numpy,写成Python列表的去了。。。最后也差一个点没写对)

3、数据结构。树的遍历方法(在本地IDE写了先序遍历的伪代码),图的遍历方法。口头描述了层次、广度、深度算法过程

4、tensorflow用过是吧(答一年前用的目前不太熟了),那2.0以上的版本用过吗(没有),了解2.x版本和1.x的区别和优势吗?

5、caffe用过是吧(不熟悉了),那caffe的定义一个…(没听清,可能是卷积层吧,反正是最基本的东西)是怎么定义的,答不清楚

6、双线性插值法步骤过程

利用同一条直线斜率相等的思想,对X方向执行单线性插值后的结果在对Y方向进行插值(插值顺序可以随意改变)。就是用x和x1,x2的距离作为一个权重,用于y0和y1的加权。
双线性插值

7、linux。 grep命令,ps命令,vim命令,如何查看进程号(答去了nvidia-smi....,结果是说任何的进程号,不是说只在gpu运行的进程),如何跳到文件的首行和末尾行,如何统计文件行数

8、shell

9、在本地电脑调好了代码(batchsize=8,epochs=1000),现在放到集群里面跑(batchsize=32,epochs=1000),学习率应该要怎么调整呢?(相当于是,batchsize对效果会有什么影响)

答:因为在反向传播的时候,每迭代一次都会求一次一批数据的损失梯度,不同的batchsize的数据梯度方向不同,学习率是指没一步朝着梯度方向下降的距离。batchsize越大,损失梯度方向越准,若batchsize增大4倍,学习率的也要增大四倍。否则可能会走不到想要到达的点。
梯度下降调整学习率例子

10、torch里面,训练的时候要加model.train(),测试的时候要加model.eval() ,你知道这两个函数的具体内部有什么操作吗?(答开关梯度更新,冻结参数之类,再问就是说没有其他操作了是吧,答是的(看来可能有。。。))

11、BN是用来做什么的,大概步骤;训练的时候和测试的时候,BN起的作用一样吗,操作一样的吗?

答:BN是在前向传播中将同一批次的数据处于相同分布的操作,它可以将数据分布在尽量靠近激活函数的非饱和区,改善梯度消失。BN中还设置了通过训练得到的缩放参数阿尔法和平移参数贝塔。这两个参数让网络学会当BN对网络有用时会加大其效果,反之减小其效果。同时BN能优化不规则的崎岖的errorsurface,使网络更容易训练。
在测试时,比如进行一个样本的预测,是没有batch的概念的,这时候的归一化使用的是全量样本的均值和方差。对于BN,训练完之后,所有的参数都确定了,包括每一批数据的均值和方差还有阿尔法和贝塔

BN训练时为什么不用全量训练集的均值和方差呢?

答:对于BN每一批数据的均值和方差和全量数据的均值和方差有一定差别,事实上,这些差别可以增强网络的鲁棒性,也会在一定程度上减少过拟合。
但是一般一批数据的均值和方差和全量数据的均值和方差差别比较大,无法很好的代表全量数据的分布,所以一般都采用将数据打乱的方式,同时采取较大的batch去缩小与全量数据的差别。

12、Dropout用来做什么的,训练的时候和测试的时候其作用一样吗?(答训练的时候会让神经元失活,测试的时候不会,再问还有别的区别吗? 答没有了吧。

答:Dropout是通过在训练阶段以概率p随机失活神经元,是为了减少输出对上一层部分神经元的依赖,类似于将不同的网络结构集成起来,减少过拟合的风险。
另外的区别就是:训练时,输出层的输入由于以概率p随机失活了一部分神经元,而测试时没有失活神经元,所以训练和测试时输出层的每个神经元的输入和的期望有量级上的差异。所以在训练时,每一层的输出数据都要除以(1-p)作为补偿神经元失活导致的代价。使得训练和测试时每一层的输入有大致相同的期望。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值