百度秋招计算机视觉面试题12道|含解析
10本七月在线内部电子书在文末,自取~
公众号福利
👉回复【100题】领取《名企AI面试100题》PDF
👉回复【干货资料】领取NLP、CV、ML等AI方向干货资料
问题1 :Maxpooling的反向传播Maxpooling的反向传播是为了计算池化层的梯度以便于更新前一层的权重。在反向传播过程中,只有最大值所在的位置会传递梯度,其他位置的梯度被设为零。具体步骤如下:
-
找到前向传播时最大值所在的位置。
-
在相同位置设置梯度为反向传播过来的梯度。
-
所有其他位置的梯度都设置为零。
-
将得到的梯度传递给上一层的相应位置。
问题2:L1和L2的区别
L1范数是指向量中各个元素的绝对值之和,也称为曼哈顿距离。L1正则化会倾向于产生稀疏权重,即某些权重变为零,从而进行特征选择。
L2范数是指向量中各个元素的平方和的平方根,也称为欧几里得距离。L2正则化会倾向于使权重分散在各个特征上,避免特定权重过大,有助于防止过拟合。
问题3:几种常见的图像特征
颜色特征:包括RGB颜色直方图、颜色矩等。
纹理特征:包括灰度共生矩阵、Gabor滤波器响应等。
形状特征:包括边缘检测、轮廓描述子等。
角点特征:包括Harris角点、FAST角点等。
SIFT特征和SURF特征:基于局部特征的描述子。
HOG特征:用于目标检测和行人识别。
问题4:深度可分离卷积是什么?
深度可分离卷积是一种卷积神经网络中的卷积操作,它将标准卷积操作分解为两个独立的步骤:深度卷积和逐点卷积。
深度卷积:在这一步骤中,每个输入通道上的卷积操作是独立进行的,产生了一组中间特征图。
逐点卷积:在这一步骤中,对中间特征图的每个通道应用1x1卷积,以组合它们并生成最终的输出特征图。
这种分解可以大大减少参数数量,减小计算量,同时保持网络性能,特别适用于轻量级和移动设备上的深度学习任务。
问题5:CNN中参数量和计算量怎么算?
参数量:计算每个卷积核中的参数数量,然后将其与卷积核的数量相乘,并考虑到所有层的参数。
计算量:计算每个卷积层的计算量,通常是输入特征图的大小乘以卷积核的大小乘以通道数量,然后将其与层的数量相乘,并考虑到所有层的计算量。
问题6:深度可分离卷积的参数量和计算量是多少?
深度可分离卷积通常具有更少的参数量和计算量,具体的量取决于网络的架构和超参数的选择。一般来说,深度可分离卷积的参数量会比标准卷积少很多,而计算量也会大大减少。
问题7:了解Linux的管道命令吗?
是的,Linux的管道命令允许将一个命令的输出作为另一个命令的输入,从而实现多个命令的串联操作。例如,可以使用管道将一个文件的内容传递给另一个命令进行处理,如将grep命令用于文本搜索,然后将结果传递给sed命令进行替换。
问题8:AUC和ROC是什么?
ROC(Receiver Operating Characteristic)曲线是用于评估二元分类器性能的图形工具。它以不同的阈值设置下绘制了真正例率(True Positive Rate,TPR)和假正例率(False Positive Rate,FPR)之间的关系曲线。
AUC(Area Under the Curve)是ROC曲线下的面积,用于度量分类器在不同阈值设置下的性能。AUC的取值范围在0到1之间,AUC值越接近1表示分类器性能越好,越接近0.5表示性能越差,0.5表示随机分类器。
问题9:Precision和Recall是什么?
Precision(精确率)是用于评估分类器性能的指标,它表示被分类为正例的样本中有多少是真正例。计算公式为 Precision = TP / (TP + FP),其中TP表示真正例,FP表示假正例。
Recall(召回率)是用于评估分类器性能的指标,它表示所有真正例中有多少被正确分类为正例。计算公式为 Recall = TP / (TP + FN),其中TP表示真正例,FN表示假负例。
问题10:Transfomer是什么?
Transformer是一种用于自然语言处理(NLP)和其他序列到序列任务的深度学习架构。Transformer的主要特点是它不使用循环神经网络(RNN)或卷积神经网络(CNN),而是依赖自注意力机制(self-attention)来处理输入序列,从而实现了并行计算,提高了训练速度。
Transformer的核心组件包括:
-
自注意力机制:允许模型在处理输入序列时动态地关注不同位置的信息,从而更好地捕捉序列中的依赖关系。
-
多头注意力:通过多个不同的自注意力头并行处理输入,增强了模型对不同关系的建模能力。
-
位置编码:用于为模型提供输入序列中各个位置的信息,因为Transformer没有固定的顺序信息。
-
堆叠的编码器和解码器层:多层的编码器用于处理输入序列,多层的解码器用于生成输出序列(在机器翻译等任务中)。
-
残差连接和层归一化:用于帮助训练深层网络的技巧。
Transformer已经成为了NLP领域的标配架构,包括BERT、GPT(Generative Pre-trained Transformer)、T5(Text-to-Text Transfer Transformer)等模型都基于Transformer架构,并在各种NLP任务中取得了巨大成功。
问题11:手撕代码:找出数组中第K大的值。
def findKthLargest(nums, k):
# 使用快速选择算法,类似于快速排序的思想
left, right = 0, len(nums) - 1
while left <= right:
pivot_index = partition(nums, left, right)
if pivot_index == k - 1:
return nums[pivot_index]
elif pivot_index < k - 1:
left = pivot_index + 1
else:
right = pivot_index - 1
def partition(nums, left, right):
pivot = nums[left]
low, high = left, right
while low < high:
while low <= right and nums[low] >= pivot:
low += 1
while high >= left and nums[high] < pivot:
high -= 1
if low < high:
nums[low], nums[high] = nums[high], nums[low]
nums[left], nums[high] = nums[high], nums[left]
return high
问题12:Python的深拷贝和浅拷贝的区别?赋值时浅拷贝还是深拷贝?
-
浅拷贝:浅拷贝创建一个新对象,但是它只复制了原对象的引用,而不复制内部的对象。在Python中,可以使用copy模块的copy()函数或者列表、字典等容器对象的切片操作来创建浅拷贝。赋值操作也属于浅拷贝,即将一个对象的引用赋值给另一个变量。
-
-深拷贝:深拷贝创建一个新对象,并且递归地复制原对象及其所有内部对象。在Python中,可以使用copy模块的deepcopy()函数来创建深拷贝。
-
赋值操作和浅拷贝都只复制了引用,多个变量会共享同一个对象。
-
深拷贝会创建一个完全独立的新对象,递归地复制所有内部对象,因此修改原对象不会影响深拷贝的对象。
免费送
↓以下10本书电子版免费领,直接送↓以上8本+《2022年Q4面试题-69道》、《2022年Q3面试题-83道》共10本, 免费送
扫码回复【999】免费领10本电子书
(或 找七月在线其他老师领取 )
点击“ 阅读原文 ”抢宠粉 福利 ~