1.二叉树
关于二叉树的前序、中序、后序三种遍历
重建二叉树
二叉树遍历(前序、中序、后序、层次遍历、深度优先、广度优先)
对于二叉树,有深度遍历和广度遍历,深度遍历有前序、中序以及后序三种遍历方法,广度遍历即我们平常所说的层次遍历。
2.stack栈和queue队列
3.背包问题
4.剑指offer
剑指offer+补充题
5.深度学习中常用激活函数总结
激活函数
6.机器学习 之 生成式模型 VS 判别式模型
生成式、判别式模型
7.高度为n的平衡二叉树最少需要多少个节点?
平衡二叉树
8.深度学习中几种常见的激活函数理解与总结
8.DSC 医学图像
具体例子
9.【顺丰笔试题】
py和pyc
形态学操作:腐蚀、膨胀、开闭操作之间的差别添加链接描述
优化算法 计算矩阵逆?
强制日志转换 alter sys
上下文无关法 产生式 定义 规则
k means 的初始聚类中心:随机选取
估计量的数学期望等于被估计参数的真实值,则称此估计量为被估计参数的无偏估计,即具有无偏性
deeplab:语义分割
中值滤波是图像处理中的一个常用步骤,它对于斑点噪声和椒盐噪声来说尤其有用。
DCT 协方差 傅里叶 谁是正交矩阵?
旋转矩阵是正交矩阵
灰度内插法 什么类型 图像退化 复原处理
正则表达式里的?添加链接描述re.match re.search
Python学习整理之输入输出input(),print()添加链接描述
python判断字符串(string)是否包含(contains)子字符串的方法:in
深度学习中的Normalization总结(BN/LN/WN/IN/GN):深度学习 BN 思想 优缺点 改进方法
CNN目标检测(一):Faster RCNN详解:faster rcnn 主要网络结构 作用
神经网络 梯度的landscape 的形状由什么因素决定
LK光流的假设:三种
11.一文读懂机器学习分类算法(附图文详解)
分类算法?
回归算法?
12 python开发
tuple list set 内存占用对比
所有的进程同步机制应遵循下述四条准则:空闲让进、忙则等待、有限等待、让权等待。
梯度截断 梯度爆炸 梯度悬崖
图像退化的原因 噪声叠加 光照
Word2Vec最终是为了得到word的低维度实数向量表示,为了这个目的,我们从原始语料中构造了一个假的分类问题。CBOW是给出上下文Context,然后预测目标词;Skip-gram正好反过来,是给出目标词,然后预测上下文。
SVM对噪声(如来自其他分部的噪声样本)具备鲁棒性
在adaboost算法中,所有被分错样本的权重更新比例不相同
AdaBoost算法中不同的训练集是通过调整每个样本对应的权重来实现的。开始时,每个样本对应的权重是相同的,即其中n为样本个数,在此样本分布下训练出一弱分类器。对于分类错误的样本,加大其对应的权重;而对于分类正确的样本,降低其权重,这样分错的样本就被凸显出来,从而得到一个新的样本分布。在新的样本分布下,再次对样本进行训练,得到弱分类器。以此类推,将所有的弱分类器重叠加起来,得到强分类器。
使用opencv做双目测距(相机标定+立体匹配+测距)
L1和L2正则化在神经网络中的运用和其他机器学习方法一样,通过约束权重的L1范数或者L2范数,对模型的复杂度进行惩罚,来减小模型在训练数据集上的过拟合问题。
1、为什么只正则化权重θ(通常用W表示),而不正则化偏置b呢?
其实也可以正则化偏置值,但是对于某一隐含层上的神经元来说,权重θ是一个高维的参数矩阵,已经可以表达高方差问题,而偏置b仅仅是单个数字,对模型的复杂度影响不大,因此一般选择忽略不计。
2、选择L1正则化还是L2正则化呢?
答案是一般选择L2正则化,或者同时加入L1正则化和L2正则化。从上图可以看到,L1正则化通常会使得最优解在y坐标轴上,从而使得最终的参数θ是稀疏向量,也就是说θ中很多值为0。此外,L1范数在取得最小值处是不可导的,这会给后续的求梯度带来麻烦。
感知器是人工神经网络中的一种典型结构
knn 基于样本分类?
ML模型超参数调节:网格搜索、随机搜索与贝叶斯优化
超参搜索方法
遗传算法是计算数学中用于解决最佳化的搜索算法
算法 解决 传统优化算法 容易误入局部最优解
常用的梯度下降优化算法 梯度下降及其优化算法:1,动量(Momentum)、2, Nesterov accelerated gradient(NAG)、3,Adagrad、4,RMSProp、5,Adadelta、6,Adam(Adaptive Moment Estimation)
GAN的问题:
训练困难,训练过程要小心平衡生成器和判别器
生成器和判别器的loss无法指示训练进程
生成样本缺乏多样性,也就是mode collapse
WGAN
WGAN的出现解决了上述GAN的几个问题,(有点小激动),以下是wgan的算法,而改进后相比原始GAN的算法实现流程却只改了四点:
1)判别器最后一层去掉sigmoid
2)生成器和判别器的loss不取log
3)每次更新判别器的参数之后把它们的绝对值截断到不超过一个固定常数c
4)不要用基于动量的优化算法(包括momentum和Adam),推荐RMSProp,SGD也行
7、下面哪些是基于核的机器学习算法?()
Expectation Maximization
Radial Basis Function
Linear Discrimimate Analysis
Support Vector Machine
A、EM算法
B、径向基核函数
C、线性判别分析
D、支持向量机
核函数的本质其实就是一种将一个空间转化为另一个空间的变化,线性判别分析是把高维空间利用特征值和特征向量转化到一维空间,所以也算是一种核函数?
模型压缩方法 剪枝
multiprocessing包是Python中的多进程管理包。
Sub-pixel convolution(子像素卷积)是一种巧妙的图像及特征图upscale的方法,又叫做pixel shuffle(像素洗牌)
深度可分离卷积(depthwise separable convolution)
对深度可分离卷积、分组卷积、扩张卷积、转置卷积(反卷积)的理解
信息列表
Filter个数:32
原始图像shape:2242243
卷积核大小为:22
一个卷积核的参数:
223=12
16个卷积核的参数总额:
1612 + 16 =192 + 16 = 208
weight * x + bias根据这个公式,即可算的最终的参数总额为:208
深度学习中的Normalization总结(BN/LN/WN/IN/GN)
每个神经元可以有一个或多个输入,和一个或多个输出。
拿ResNet50来看:第一层为7x7x64的卷积,然后是3+4+6+3=16个building block,每个block为3层,所以有16x3=48层。最后有个fc层,所以总共为1+1+48=50层。
使用ReLU激活函数的神经网络是能够模拟出同或函数的。但如果ReLU激活函数被线性函数所替代之后,神经网络将失去模拟非线性函数的能力。
Sigmoid函数与损失函数求导
attention based model
特性选择有很多种方法,但是大多可以分为三类:
• 过滤:列入一些筛选特征的标准,如相关性/卡方分布。
• 包装:包装法将特征选择看作是搜索问题。如回归特征消除。
• 嵌入:嵌入法使用内置了特征选择方法的算法。比如,Lasso和RF都有各自的特征选择方法。
决策树的特点
随机森林
影石:
pytorch 的nn.MSELoss()损失函数均方误差计算是逐元素运算的
欠拟合、过拟合及其解决方法
欠拟合就是模型没有很好地捕捉到数据特征,不能够很好地拟合数据。
过拟合就是模型把数据学习的太彻底,以至于把噪声数据的特征也学习到了,这样就会导致在后期测试的时候不能够很好地识别数据,即不能正确的分类,模型泛化能力太差。
解决方法:
重新清洗数据。
增大数据的训练量。
采用正则化方法。
采用dropout方法。
而正则化是通过约束参数的范数使其不要太大,所以可以在一定程度上减少过拟合情况。
欠拟合情况:随着训练样本数增大,训练集得分和验证集得分收敛,并且两者的收敛值很接近。?
过拟合情况:随着训练样本数增大,训练集得分和验证集得分相差还是很大。?
学习曲线——判断欠拟合还是过拟合
这个更详细?
N=(image_h + 2*pad_h – kernel_h)/stride_h+ 1
快速排序
join处理的是字符串
C4.5算法采用信息增益率来选择最优划分属性。
图像分类:
基于色彩特征的索引技术、基于纹理的图像分类技术、基于形状的图像分类技术、基于空间关系的图像分类技术。
在人工神经网络领域中,感知机也被指为单层的人工神经网络,以区别于较复杂的多层感知机(Multilayer Perceptron)。作为一种线性分类器,(单层)感知机可说是最简单的前向人工神经网络形式。尽管结构简单,感知机能够学习并解决相当复杂的问题。感知机主要的本质缺陷是它不能处理线性不可分问题。
分水岭法(Meyer,1990)是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图像看作是测地学上的拓扑地貌,图像中每一点像素的灰度值表示该点的海拔高度,每一个局部极小值及其影响区域称为集水盆,而集水盆的边界则形成分水岭。该算法的实现可以模拟成洪水淹没的过程,图像的最低点首先被淹没,然后水逐渐淹没整个山谷。当水位到达一定高度的时候将会溢出,这时在水溢出的地方修建堤坝,重复这个过程直到整个图像上的点全部被淹没,这时所建立的一系列堤坝就成为分开各个盆地的分水岭。分水岭算法对微弱的边缘有着良好的响应,但图像中的噪声会使分水岭算法产生过分割的现象。图像分割算法概述
二叉树性质:终端结点(叶子节点)个数n0 = 度为2的节点(有2个孩子)个数n2 + 1
即n0 = n2 + 1.
链接:https://www.nowcoder.com/questionTerminal/38210e8bfdf9495c860f4f5ab148cb6e
来源:牛客网
将二叉树的度为0的节点数记为n0,度为1的节点数记为n1,度为2的节点数记为n2。
又因为,二叉树只有度为0,1,2的节点,没有其它节点。
得出,二叉树总节点数 N = n0 + n1 + n2 (此为公式1)
再因为,二叉树总度数(树枝的总数量)永远比节点数少1,这个很简单就能理解。
二叉树总度数 C = N - 1,总度数C = 2 *n2 + 1 * n1。
得出,N = 2 * n2 + n1 + 1(此为公式2)
综上公式1和公式2推出:n0 = n2 + 1
这就是二叉树的性质之一:度为0的节点数 等于 度为2的节点数加1。
假设有一批人的年龄的数据,大致知道其中有一堆少年儿童,一堆青年人,一堆老年人。
聚类就是自动发现这三堆数据,并把相似的数据聚合到同一堆中。所以对于这个例子,如果要聚成3堆的话,那么输入就是一堆年龄数据,注意,此时的年龄数据并不带有类标号,也就是说我只知道里面大致有三堆人,至于谁是哪一堆,现在是不知道的,而输出就是每个数据所属的类标号,聚类完成之后,就知道谁和谁是一堆了。
而分类就是,我事先告诉你,少年儿童、青年人及老年人的年龄是什么样的,现在新来了一个年龄,输出它的类标号,就是它是属于少年儿童、青年人、老年人的哪个类。一般来说,分类器是需要训练的,也就是要告诉你的算法,每个类的特征是什么样子,它才能识别新的数据。
机器学习中正则化项L1和L2的直观理解:这个大部分有用?
非极大值抑制(non-maximum suppression)的理解