大疆
- 填空题
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.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.给你一个数列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校园招聘求职大礼包及电子杂志