Deecamp2019年试题A卷详解和感受

选择题

选择题共5道,具体题目和我个人写的解答如下。

0/1分类问题

deecamp
对于这道题,我们先来理清一些二分类中的基本概念和问题。
下面是一个二分类过程图详解:

要看更详细的介绍,推荐这篇文章:分类指标accuracy,recall,precision等的区别
一般情况下,precision和recall不会同时增大或者减小。理性分析的话:

  1. 当提高Threshold ,TP+FP减少 FN+TN增多
  2. **对TP进行讨论,当TP数量不变 Precision变大,Recall不变或者减小。当TP数量变小,precision与TP/FP成正相关,初始时TP/FP = 4。当threshold增大时,TP/FP应该是增大的。所以precision增大,recall减小。

凸函数问题

凸函数
这道题比较简单,只需要有高中数学的知识即可。
常用的方法是用二阶导数判断。

卷积核问题

卷积核
关于如何理解卷积核及其作用,可以看我这篇文章深入了解
一文入门卷积神经网络

0/1分类问题2

0/1分类
这道题我认为最大是2,当三个点在一条直线上,且中间的点和其他两点标签不同时,无法分开。

代码阅读题

在这里插入图片描述
这题要看懂两个循环。当N特别大,这就代表可以用概率的方法求这道题。然后要着重看while那个循环,仔细看其实可以发现这道题就是求while循环一轮结束之后count+1执行的概率之和。比较复杂。共有八轮,我是一轮一轮的循环列出来进行计算的。
最后算出来的结果是:1334325/1679616

填空题

填空题共五道,具体题目以及我写的解答如下。

填空01

计算机
这道题比较简单,1/0.640=1.563(保留三位小数)

填空02

在这里插入图片描述
感觉回到了高中,这用简单的高中代数就可解决。用大学知识来说的话,有点线性代数的感觉。答案:1.2

填空03

Bloom Fliter
这道题有难度,看到这道题让我想起了之前遇到过的一道题,问1000瓶药里面只有1瓶是有毒的,毒发时间为24个小时,问需要多少只老鼠才能在24小时后试出那瓶有毒。
关于老鼠这道题,1000接近1024,可以用十个bit对每瓶药进行编号。这十个bit对应十只老鼠。**然后从低位开始,让第N只老鼠喝下第N个bit为 1 的瓶子中的药。 然后如果其中一些老鼠发病,将其对应的bit置为1,其余bit置为0,得到的即为有毒那瓶药的编号。
这道题是同样的思路。所以至少需要十个手机。

填空04

位运算
写这道题,我们需要明白内存中的高低位存储问题。实在不理解的话,可以把这个代码敲一遍亲手验证一下。
这道题应该是 ;2^29+ 2^27+ 2^26+ 2^24+ 2^20 + 2^ 18 +2^ 17 +2^16 +2^8 = 756482304

填空05

在这里插入图片描述
这道题相对于其他的要难一些。需要写一些代码来实现。
同时这个题目还有minst.npz附件,如果需要可联系[email protected] 或在下方评论私信,看到后会马上发给你
解答看最后一道问答题。这道题的答案是:

1, 5, 7, 8

问答题

问答题有一道,题目如下。
在这里插入图片描述
提供一个这道题的思路(暴力遍历):

将MNIST数据集中(60000张28x28的图片)每张图片像小明一样分割为4张14x14的子图(分别为左上角,右上角,左下角,右下角),然后与小明的16张14x14的图片进行匹配,若4个角都匹配上,那么就选择出该数字,匹配上就是直接计算L1距离为0的。

关于这道题如何想出这个思路,我觉得可以从入门机器学习的都会学习一个KNN算法思路发散而来。
代码如下:

import numpy as np
tmp = np. load('mnist.npz')
x_train = tmp['x_train']
y_train = tmp['y_train']
crop = tmp['crops'].reshape(1, -1, 14, 14)

# numpy内部的循坏,获取每张图片的四个角。
# reshape将n*14*14(n为图片的张数)维度的图片增加了一个维度用来 代替循环
x_lu = x_train[:, : 14, : 14].reshape(-1, 1, 14, 14)
x_ld = x_train[:, 14:, : 14].reshape(-1, 1, 14, 14)
x_ru = x_train[:, :14, 14:].reshape(-1, 1, 14, 14)
x_rd = x_train[:, 14:, 14:].reshape(-1, 1, 14, 14)
# 求距离
d_lu = (crop - x_lu).sum(-1).sum(-1)
d_ld = (crop - x_ld).sum(-1).sum(-1)
d_ru = (crop - x_ru).sum(-1).sum(-1)
d_rd = (crop - x_rd).sum(-1).sum(-1)

# 当4个距离均为0的时候,就是我们想要的结果了
print(y_train[(d_lu.min(1) == 0) & (d_ld.min(1) == 0) & (d_ru.min(1) == 0) & (d_rd.min(1) == 0)])

以上2019年Deecamp2019年试题A卷所有题目了。2019年没有报名,2020年定要报名参加。

发布了17 篇原创文章 · 获赞 6 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44307764/article/details/103884756