网站首页 > 技术文章 正文
文末彩蛋:七月在线干货组最新升级的《名企AI面试100题》免费送!
问题1:编程题旋转有序数组,查找元素是否存在
思路:
1、暴力破解:遍历整个数组,查找元素是否存在;
2、二分查找:旋转后局部数组依然是有序的,所以此时依然可以使用二分查找算法;
参考代码:
问题2:实现余弦相似度计算
余弦相似度:用两个向量夹角判断其相似程度;
向量夹角越大,距离越远,最大距离就是两个向量夹角180°;
向量夹角越小,距离越近,最小距离就是两个向量夹角0°,完全重合。
所以余弦相似度越大,向量越相似;
计算公式:
求余弦相似度方法:
Numpy:
Pytorch:
Sklearn:
问题3:验证二叉搜索树(BST)
二叉搜索树具有如下特征:
节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。
所有左子树和右子树自身必须也是二叉搜索树。
思路:
根据二叉搜索树的特征可知︰如果二叉树的左子树不为空,则左子树上所有节点的值均小于它根节点的值;若它的右子树不空,则右子树上所有节点的值均大于它根节点的值;并且它的左右子树也为二叉搜索树。
可以设计一个递归函数check(root, max_num, min_num),函数表示考虑以root为根的子树,判断子树中所有节点的值是否都在(max_num, min_num)的范围内。如果root节点的值val不在(max_num, min_num)的范围内说明不满足条件直接返回False,否则继续递归,检查它的左右子树是否满足,都满足则说明这是一棵二叉搜索树。
注意∶
在递归调用左子树时,需要把上界max_num改为root.val;递归调用右子树时,需要把下界min_num改为root.val.
函数递归调用的入口为check(root, float("inf"), -float("inf")), float("inf")表示一个无穷大的值。
参考代码︰
问题4:用randomInt(5)实现randomInt(7),只用讲思路
randomInt(5):等概率生成整数[1,2,3,4,5]
randomInt(7):等概率生成整数[1,2,3,4,5,6,7]
思路:
1、用(randomInt(5)- 1)构造等概率整数数组:[o,1,2 ,3,4]
2、用(randomInt(5) - 1)*5构造整数数组︰[0,5,10,15,20]
3、上面的两个整数组可以构造等概率的新数组:[0,1,2,3,4,5,6,7,... , 24];(如果第2个数组选择2倍或者3倍,4倍则无法构造新的等概率数组)
4、选择新数组[o,1,2,3....,20]21个元组即可构造等概率的数组[1,2,3,4,5,6,7]
参考代码:
问题5:编程题:分割链表问题
分割链表︰
给定一个链表的头节点head和一个特定值×,然后对链表进行分隔,使得所有小于x的节点都出现在大于或等于x的节点之前。同时保留两个分区中每个节点的初始相对位置。
如下图所示:
思路:
需维护两个链表small和large,small链表按顺序存储所有小于x的节点,large链表按顺序存储所有大于等于x的节点。遍历完原链表后,我们只要将small链表尾节点指向large链表的头节点即能完成对链表的分隔。
参考代码:
问题6:怎么解决过拟合?怎么做图像增广?
常见缓解过拟合的方法:
1、降低模型复杂度
2、增加更多的训练数据:使用更大的数据集训练模型
3、数据增强
4、正则化:L1、L2、添加BN层
5、添加Dropout策略
6、Early Stopping
7、重新清洗数据︰把明显异常的数据剔除
8、使用集成学习方法︰把多个模型集成在一起,降低单个模型的过拟合风险
常见的数据增广方法:
1、水平/垂直翻转
2、随机旋转
3、随机缩放
4、随机剪切
5、颜色、对比度增强
6、cutOut
7、CutMix
8、Mixup
9、Mosaic
10、Random Erasing
问题7:梯度下降方法有哪些?
梯度下降算法有如下3种:
1、随机梯度下降法:SGD
2、批量梯度下降法:BGD
3、min-batch小批量梯度下降法:MBGD
问题8:sigmoid有哪些特性?激活函数了解多少?
Sigmod函数性质:
1、定义域:( -oo , +oo );
2、值域:(-1 ,1);
3、函数在定义域内为连续光滑函数;
4、处处可导,导数为:
5、函数的取值在О到1之间,在0.5处呈中心对称,且越靠近x=0的取值斜率越大。
常见激活函数:
1、Sigmoid
2、Tanh
3、Relu . Leaky Relu、P-Relu (Parametric ReLU)
4、Elu、Gelu
5、Swich
6、Selu
评论有奖:评论区回复“100题”,免费领取最新升级版《名企AI面试100题》电子书!
猜你喜欢
- 2024-10-12 神经网络调试:梯度可视化 神经网络 梯度
- 2024-10-12 使用Scikit-Learn库对Keras模型进行超参数调整
- 2024-10-12 PyTorch 0.2发布:更多NumPy特性,高阶梯度等
- 2024-10-12 Tensorflow中的卷积神经网络 tensorflow 卷积神经网络
- 2024-10-12 深度学习中的激活函数总结 激活函数原理
- 2024-10-12 「周末AI课堂」SELU和ResNet(代码篇)机器学习你会遇到的“坑”
- 2024-10-12 想降低云服务的花销?或许深度强化学习能帮到你|论文
- 2024-10-12 SELU和ResNet(代码篇)|机器学习你会遇到的“坑”
- 2024-10-12 深度强化学习还能帮你省钱!这项研究要用RL控制云服务开销
- 2024-10-12 SELU和ResNet(理论篇)机器学习你会遇到的“坑”
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)