学习2021-

17 篇文章 0 订阅
14 篇文章 0 订阅

在这里插入图片描述


最后更新,2021.09.14



基础

python的frozenset() 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素

python中的*args **kwargs传参,第一个是以元组形式传参,方法内打印args就是元组,kwargs是字典,传参形式是key=value

赋值、浅拷贝、深拷贝
变量的存储,存储的是变量的值指向的内存地址,赋值操作不会开辟新的内存空间,它只是复制了新对象的引用
浅拷贝会创建新对象,其内容是原对象的引用,他们不是同一个对象,它们也不指向同一片内存
深拷贝只有一种形式,copy模块中的deepcopy,深拷贝拷贝了对象的所有元素,包括多层嵌套的元素,时间和空间开销要高,然而深拷贝的对象也是一个全新的对象

python各种包的使用

常用方法
pandas
pandas 是基于numpy 的一种工具,该工具是为解决数据分析任务而创建的。pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具
是Pandas库中有一种基础的数据结构DataFrame,它类似excel,是一种二维表
DataFrame的单元格可以存放数值、字符串等,这和excel表很像,同时DataFrame可以设置列名columns与行名index

numpynumpy
numpy(Numerical Python)是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库

sklearn
Scikit-learn(也称为sklearn)是针对Python 编程语言的免费软件机器学习库 。它具有各种分类,回归和聚类算法,包括支持向量机,随机森林,梯度提升,k均值和DBSCAN,并且旨在与Python数值科学库NumPy和SciPy联合使用

Scipy高级科学计算库
Scipy一般都是操控Numpy数组来进行科学计算、统计分析,是基于numpy之上的模块。Scipy有很多子模块可以应对不同的应用,例如插值运算,优化算法等等
Scipy是世界上著名的Python开源科学计算库。它增加的功能包括数值积分、最优化、统计和一些专用函数。 SciPy函数库在NumPy库的基础上增加了众多的数学、科学以及工程计算中常用的库函数。例如线性代数、常微分方程数值求解、信号处理、图像处理、稀疏矩阵等等
SciPy则是在NumPy的基础上构建的更为强大,应用领域也更为广泛的科学计算包
Scipy包含的功能:最优化、线性代数、积分、插值、拟合、特殊函数、快速傅里叶变换、信号处理、图像处理、常微分方程求解器等

python多线程变量安全

在多线程环境下,每个线程都有自己的数据。一个线程使用自己的局部变量比使用全局变量好,因为局部变量只有线程自己能看见,不会影响其他线程,而全局变量的修改必须加锁

可以用ThreadLocal(threading.local()),ThreadLocal 在每一个变量中都会创建一个副本,每个线程都可以访问自己内部的副本变量
我们知道多线程环境下,每一个线程均可以使用所属进程的全局变量。如果一个线程对全局变量进行了修改,将会影响到其他所有的线程对全局变量的计算操作,从而出现数据混乱,即为脏数据。为了避免各个线程同时对变量进行修改,引入了线程同步机制,通过互斥锁、条件变量或者读写锁来控制对全局变量的访问
只用全局变量并不能满足多线程环境的需求,很多时候线程还需要拥有自己的私有数据,这些数据对于其他线程来说是不可见的。因此线程中也可以使用局部变量,局部变量只有线程自身可以访问,同一个进程下的其他线程不可访问
有时候使用局部变量不太方便,因此 Python 还提供了ThreadLocal 变量,它本身是一个全局变量,但是每个线程却可以利用它来保存属于自己的私有数据,这些私有数据对其他线程也是不可见的。
ThreadLocal 做到了线程之间的数据隔离

数据插值方法

插值方法有很多,比如反距离加权(IDW)、Kriging_Regression、径向基函数插值rbf、线性插值、自然邻接点插值、cressman、Delaunay三角剖分插值法等

双线性插值
f(x,y) * (x2-x1)(y2-y1) = (x2-x)(y2-y)f(x1,y1) + (x-x1)(y-y1)f(x2,y2) + (x-x1)(y2-y)f(x2,y1) + (x2-x)(y-y1)f(x1,y2)
精确,但是运行慢,追求效率但不太追求精度的话建议用最邻近插值

拉格朗日插值(非线性插值,效率低且很可能没必要)
对于平面上已知的n个点都可以找到一个 n-1 次多项式对应
每个点对应到多项式上产生很多组方程,n个方程,n个未知数,可以利用线性代数中的行列式求解
得到拉格朗日插值多项式为L(x)=sum(Yi ∏(x-xj)/(xi-xj))
比如有三个点,(3,10),(6,8),(9,4)
L(x)=f(3)l0(3)+f(6)l1(6)+f(9)l2(9),得到y=a0+a1x+a2x2

from scipy.interpolate  import lagrange
x = [3, 6, 9]
y = [10, 8, 4]
lagrange(x,y)
#poly1d([ -0.1111, 0.33333,  10.]) 输出值是多项式三个系数

误差分析

平均误差(Mean Error, ME),sum(x-y)/n
平均绝对误差(Mean Absolute Error, MAE),sum(abs(x-y))/n
均方根误差(Root-Mean-Square Error, RMSE),sqrt(sum((x-y)**2)/n)
标准化均方根误差(Root-Mean-Square Standardized Error, RMSSE),sqrt(sum(((x-y)/z)**2)/n),z为MAE
相关系数(Correlation coefficient, R),协方差/各自方差

毫米波雷达数据质控

毫米波数据不能直接拿来用,需要使用质量控制后的数据(比如地物回波消除等)
雷达在探测云、雾和降水等气象目标物的同时,也可以探测到非气象目标物,包括地物,生物(如昆虫、鸟群等)以及太阳辐射等。这些非气象回波会干扰气象回波,影响反演产品的准确性,导致临近预报出现偏差,因此要在产品应用之前将其识别并去除
主要的资料控制方法如下:地物回波/超折射地物回波识别及剔除算法;径向速度退模糊算法;径向干扰回波识别及订正算法;孤立噪点剔除算法;回波空洞填补算法

取雷达数据矩阵7 * 7 看,有效值大于5个才做处理
阈值:反射率大于0,纹理反射率(7*7里面42个相减平方的和/有效值数量(就是方差))大于2,谱宽和 abs|径向速度|小于0.2。满足以上条件话,距离小于3km/60库长的范围全部给0

EOF正交分析

经验正交函数分析方法(Empirical Orthogonal Function),也称特征向量分析(Eigenvector Analysis),或者主成分分析(PCA)
地学数据分析中通常特征向量对应的是空间样本,所以也称空间特征向量或者空间模态;主成分对应的是时间变化,也称时间系数。因此地学中也将EOF分析称为时空分解
E0F分析方法能够把随时间变化的变量场分解为不随时间变化的空间函数部分以及只依赖时间变化的时间函数部分
计算方差贡献,选出主要分量


机器学习知识

算法

FM

FM(Factorization Machine,因子分解机)主要是为了解决数据稀疏的情况下,特征怎样组合的问题。已一个广告分类的问题为例,根据用户与广告位的一些特征,来预测用户是否会点击广告
特征经过one-hot编码以后,样本的数据就变得很稀疏。假设淘宝或者京东上的item为100万,如果对item这个维度进行one-hot编码,光这一个维度数据的稀疏度就是百万分之一。数据的稀疏性,是我们在实际应用场景中面临的一个非常常见的挑战与问题。

普通的线性模型,我们都是将各个特征独立考虑的,并没有考虑到特征与特征之间的相互关系。但实际上,大量的特征之间是有关联的
如果我们能将这些有关联的特征找出来,显然是很有意义的,与线性模型相比,FM的模型就多了后面特征组合的部分,就给予了FM模型的表达能力


深度学习模型

基础知识的掌握情况决定研究的高度,很多人接触DL时,一般都只是看到别人的概括,虽然能快速上手,但还是对知识理解的不透彻,导致我们算法优化时一头雾水,需要多巩固基础多总结

基础

激活函数

神经网络的神经元一般是通过激活函数后计算出来的,这个过程可以看成y=f(x),这些神经元单元应该具有下列基础性质:有界、容易求导、单调(容易进行凸优化)、计算简单
比如sigmoid:1/1+e-x,tanh:ex-e-x/ex+e-x(收敛更快,梯度计算的代价更少),relu:max(x,0)(稳定不会饱和,cv里常用)

损失函数

0-1损失函数、绝对值损失函数、均方根误差函数(平方和,对于回归问题,通常选择它作为误差函数)、交叉熵损失函数(J=-(ΣΣyi·log(pi))/N,N是样本数,yi是i的真实标签,pi是类别i的概率值,先求和类别数,再求和样本数)、SVM损失等

BN

BN(Batch Normalization)的原理和作用
为了保证网络的收敛和训练速度性能的影响,我们常常对输入的数据进行零均值和1方差的原则进行初始化。但是随着网络的训练,参数得到不同程度的更新,这样这些参数会失去0均值和1方差的分布。这样会带来数据的偏移,导致收敛速度下降,并且容易带来过多神经元未被激活,会带来参数的调整过大影响收敛性能
现在一般采用批梯度下降方法对深度学习进行优化,这种方法把数据分为若干组,按组来更新参数,一组中的数据共同决定了本次梯度的方向,下降时减少了随机性。另一方面因为批的样本数与整个数据集相比小了很多,计算量也下降了很多

BN可以看作在各层之间加入了一个新的计算层,对数据分布进行额外的约束,从而增强模型的泛化能力,也同时降低了模型的拟合能力.破坏了之前的特征分布(防止过拟合)
BN的好处,减轻了对参数初始化的依赖-利于调参,把训练数据集打乱了-防止训练发生偏移,训练更快-可以使用更高的学习率,BN一定程度上增加了泛化能力-dropout等可以去掉

鞍点

在深度学习的优化问题中,经常存在鞍点,就是这一点的导数为0,从某些维度看是极小值,从另一些维度看是极大值
深度学习的寻优过程中,鞍点所造成的困难,远比局部最小值大的多。在高维参数空间,鞍点存在较多,正是因为鞍点的大量存在,传统的牛顿法(直接寻找梯度为0的点)不适合来寻优
解决鞍点问题的方法:随机梯度,相当于给正确的梯度加了一点noise,一定程度上避免了鞍点;随机初始化起点;增加随机扰动;使用mini-batch梯度下降法,它本身就是有噪声的梯度估计

注意力机制

MT翻译的一个缺点就是短句不好评估,长句更难决策,所以我们有了注意力模型。这个模型实际上就是在正常RNN模型准备输出每个y时加入了一个注意力单元处理机制(注意周围的词)(注意参数s)

注意力机制就是对输入权重分配的关注,将焦点放在不同的单词上,通过评分函数来获取每个编码器隐藏状态的分数(标量),然后将每个编码器的隐藏状态与其softmaxed得分(标量)相乘,就能获得对齐向量,如果注意力分数很低,那么对齐就减少到了0,最后将对齐向量聚合起来,得到语境向量

策略梯度

策略梯度算法(Policy Gradient),它让神经网络直接输出策略函数 π(s),即在状态s下应该执行何种动作。对于非确定性策略,输出的是这种状态下执行各种动作的概率值
类似于多分类问题的softmax回归,输出的是一个概率分布,只不过这里的概率分布不是用来进行分类,而是执行动作
使用平均奖励目标函数

代码实现

前向反向、激活函数、优化器等实现

模型

CNN的平移不变性
卷积+最大池化约等于平移不变性,图像经过平移,相应的特征图上的表达也是平移的。比如图像左下角有一个人脸,经过卷积,人脸的特征(眼睛,鼻子)也位于特征图的左下角。假如人脸特征在图像左上角,那么卷积后对应的特征也在特征图的左上角
卷积的平移不变性就是通过卷积+池化以后不管某一特征移动了位置,总可以检测出来输入到下一层中,又由于全连接是加权求和计算,被CNN激活的特征又可以传导到下一层中

CAE
convLSTM
FlowNet

特征工程

增加特征:行业方向上的判断增加、几小时累积的特征、特征的时间空间变化率等

特征缺失值处理:填充周围的值pd.fillna(‘bfill’),给0(看情况,一般不这样),给全局平均值

模型优化

建模问题:实际需求和数据集的分布偏差,去掉一些偏离太多的数据-加大目标数据的比例,或对目标数据分布做数据增强,或两者都有

模型部署

端侧部署,要注重模型的推理性能,为实现高性能推理,想要一个速度快精度高占用少,方法:
芯片的并行处理能力、GPU超多线程并行处理只能提升算力
需要模型压缩,比如模型量化(压缩参数、减小计算量,比如二值化、线性量化、对数量化,但会精度损失)、模型剪枝(尽量不影响精度的情况下精简,对以训练好的模型进行裁剪的方法,是目前模型压缩中使用最多的方法。在训练迭代一定次数后,便对net中的接近0的权重,都置为0,以此反复,直到net的参数达到目标的稀疏度。这样,模型训练完成后,模型里面大多数的weight皆为0,那么,当我们使用zip进行压缩时,模型便可以得到很大程度的压缩,且在推断过程中,减少了很多的计算量。可以使用tensorflow-model-optimization模块来剪枝)和模型蒸馏(大模型蒸馏小模型,使小模型有与大模型接近的效果。将大模型学习出来的知识(软目标)作为先验,将先验知识传递到小模型(专用模型)中,之后实际应用中部署小模型。本质上更接近于迁移学习)

部署并不是一劳永逸,需要自我迭代
需要在应用中收集样本、不断更新模型
最简单的模型维护方式就是不断添加新数据到原有数据集,从而让模型持续优化

模型适配
硬件适配:CPU、GPU、FPGA、ASIC芯片、Nvidia、海思、麒麟、高通、寒武纪等
软件适配:linux、windows、Android、IOS
框架适配:PaddlePaddle、tensorflow、PyTorch、Caffe、MXNet、ONNX格式(中间模型)
算法适配:图像分配、物体检测、人脸识别、OCR等


图像算法相关


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值