美文网首页
求职招聘-记录

求职招聘-记录

作者: yanghedada | 来源:发表于2019-02-28 15:22 被阅读0次

    大疆

    地址

    1. 填空题
      1.具体题目记不太清楚了,是关于输如一个200x200的图像,经过几次卷积和池化后,求维度大小。
      卷积后的输出尺寸和维度可以用公式计算:
      out_height=(in_height+2pad-filter_height)/strides[1]+1
      out_width=(in_width+2pad-filter_width)/strides[2] +1

    2.在训练集标签为[0,0,0,1,1,1,1,1], 求信息熵的大小。
    根据信息熵的计算公式
    H = -3/8 * log(3/8) - 5/8 * log(5/8)

    1. 简答题
      1.BP算法推导
      网上资料很多
      参考 https://www.cnblogs.com/HolyShine/p/6413653.html

    2.写出Leaky-ReLu的数学公式,相对于sigmoid函数的优点
    参考 https://www.cnblogs.com/chamie/p/8665251.html

    3.Adagrad的优缺点
    优点:在整个更新期间学习率不是固定的,会随着训练变化,适合面对稀疏梯度;
    缺点:依赖于一个人工设定的全局学习率,中后期分母上的梯度放平累加会越来越大,使得更新提前停滞,训练提前结束。
    参考:https://blog.csdn.net/u010089444/article/details/76725843

    4.在图像处理中,Data augmentation有哪些方式
    数据增强是深度学习中有效方法,可以在不实质性增加数据的情况下,让有限的数据产生等价于更多数据的价值。
    数据增强分为有监督数据增强、无监督数据增强。有监督数据增强包括单样本数据增强和多样本数据增强。
    在图像处理中,常用的有:

    A. 几何变换。对原图进行几何变换,包括 翻转、旋转、裁剪、变形、缩放。
    B. 颜色变换。包括噪声、模糊、颜色变换、擦除、填充。
    C. SMOTE,通过人工合成新样本抑制样本不均衡的问题。SMOTE是一种插值方法,在python中封装在imbalanced-learn库中。
    D. SamplePairing,从训练集中随机抽取两张图片经过数据增强基础操作(随机翻转等)后对像素求平均,叠加形成新样本。
    5.为什么要进行数据归一化,有哪些方式
    归一化可以简化计算,将有量纲的表达式变为无量纲的,同时可以提升模型的收敛速度和精度。
    参考 https://blog.csdn.net/pipisorry/article/details/52247379

    1. 编程题
      1.给你一个数列a[0], n[1],…,a[n-1],n大于4,必定存在i, j, p, q, 使得i<j<p<q,且n[j]−n[i]+n[q]−n[p]值最大,求出这个最大值,并说明时间复杂度。
      首先想到暴力解法,依次遍历i, j, p, q, 时间复杂度O(n^4)。
      需要考虑数组中可能会有重复元素。
      遍历数组,将其分为左子数组和右子数组,在子数组中寻找i < j, 使 nums[j]-nums[i] 最大,从而获得问题的解。时间复杂度 O(n*(n2+n2)) = O(n^3)。

    void main(){
    vector<int> nums{ 1,1,1,1,3,3 };
    int length = nums.size();
    int max_result = INT_MIN;
    for (int mid = 1; mid < length-2; ++mid){
    int max_left = INT_MIN;
    for (int i = 0; i < mid; ++i)
    for (int j = i + 1; j <= mid; ++j)
    if (nums[j] - nums[i] > max_left)
    max_left = nums[j] - nums[i];
    int max_right = INT_MIN;
    for (int p = mid+1; p < length-1; ++p)
    for (int q = p + 1; q < length; ++q)
    if (nums[q] - nums[p] > max_right)
    max_right = nums[q] - nums[p];
    if (max_left + max_right > max_result)
    max_result = max_left + max_right;
    }
    cout << max_result << endl;
    }
    2.给你一个数组,求一个k值,使得前k个数的方差+后面n-k个数的方差最小,并说明时间复杂度。
    这道题容易想到的是暴力解法,从左往右遍历用数组记录左子数组均值,再从右往左遍历用数组记录右子数组均值,然后再遍历数组计算左、右子数组方差的和,时间复杂度O(n^2),空间复杂度O(n)。

    更快的解法:需要用到一个概念,方差等于平方的均值减均值的平方。利用这个公式,首先还是从左往右遍历数组,记录左子数组的方差,再从右往左遍历,记录右子数组的方差,最后遍历一次数组计算使方差和最小的k。时间复杂度O(n),空间复杂度O(n)。

    void main(){
    vector<int> nums{ 1,1,1,1,3,3 };
    int length = nums.size();

    vector<float> left(length, 0.0);
    vector<float> right(length, 0.0);
    // 计算从左向右扫描左子数组的方差
    float left_sum = 0.0, left_square = 0.0;
    for (int i = 0; i < length; ++i){
        left_sum += nums[i];
        left_square += nums[i] * nums[i];
        left[i] = left_square / (i + 1) - (left_sum / (i + 1)) * (left_sum / (i + 1));
    }
    // 计算从右向左扫描右子数组的方差
    float right_sum = 0.0, right_square = 0.0;
    for (int i = length - 1; i >= 0; --i){
        right_sum += nums[i];
        right_square += nums[i] * nums[i];
        right[i] = right_square / (length - i) - (right_sum / (length - i)) * (right_sum / (length - i));
    }
    
    for (int i = 0; i < length; ++i)
        cout << left[i] << ' ' << right[i] << endl;
    
    
    // 需要注意,分割点是i,左子数组是[0, i], 右子数组是(i, n];
    float min_var = right[0];
    int k = -1;
    for (int i = 0; i < length - 1; ++i){
        if (left[i] + right[i + 1] < min_var)
            min_var = left[i] + right[i + 1], k = i;
    }
    cout << k+1 << endl;
    

    }

    马上就要毕业了,记录一些的资料:
    2019最新春招网申时间 Excel 表(持续更新)

    笔试面经和试题:
    计算机视觉算法&面试准备
    收集笔试面试题型(机器学习+目标检测)
    计算机视觉及深度学习岗位应聘问题汇总
    深度学习(计算机视觉)面试中问题(一)
    深度学习(计算机视觉)面试中问题(二)
    深度学习岗位面试问题整理笔记
    深度学习100题
    github面经汇总
    2017秋招面试总结-计算机视觉/深度学习算法

    求职大礼包:
    2019校园招聘求职大礼包及电子杂志

    相关文章

      网友评论

          本文标题:求职招聘-记录

          本文链接:https://www.haomeiwen.com/subject/lbahuqtx.html