百度秋招计算机视觉面试题12道|含解析

七月在线实验室

共 4594字,需浏览 10分钟

 · 2023-10-01

10本七月在线内部电子书在文末,自取~

公众号福利

👉回复【100题】领取《名企AI面试100题》PDF

👉回复【干货资料】领取NLP、CV、ML等AI方向干货资料

f6cc8465e9e72a82ffac5840cb49aa90.webp 72cdebb2f1b1cba0abb4ae391bed3483.webp f6cc8465e9e72a82ffac5840cb49aa90.webp 问题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本书电子版免费领,直接送↓
33ece7860a7de8b381e124084b8c3ab4.webp

84baf95d78177b6cc1c695431ac8ccdf.webp

以上8本+2022年Q4面试题-69道》、2022年Q3面试题-83道》共10本, 免费送


扫码回复【999】免费领10本电子书

      

(或 找七月在线其他老师领取

点击 阅读原文 ”抢宠粉 福利 ~

e12e74d0f4ba366abea5e00b8685ae1d.webp

浏览 3
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报