- 博客(31)
- 收藏
- 关注
原创 成像基础6——相机模组中的绿不平衡问题
绿不平衡属于 senor模组 的一种缺陷。成因:一般是两个方面,一方面是半导体,另一方面就是micro lens的原因。相机魔族的结构,从sensor角度来看,就是一行rg、rg,然后下一行是gb、gb。绿不平衡就是相邻的GR和GB像素在光照条件下的信号不相等。(如上图曲线所示,左图GR、GB曲线重合,是Green Balance的,右边是绿不平衡的)这种不相等会在照片中产生明显的纹理,如迷宫格,影响图片质量。
2024-11-03 23:24:14
738
原创 详解 Nvidia Ampere 架构
NVIDIA Ampere架构是NVIDIA推出的高性能GPU微架构,它是继Volta和Turing架构之后的新一代技术。Ampere架构在2020年首次发布,并被用于构建多种类型的GPU产品,包括数据中心的A100以及面向消费者的GeForce RTX 30系列显卡。Ampere架构代表了在计算性能、能效和AI加速方面的重大进步。
2024-04-04 14:43:02
4748
原创 【Nvidia显卡知识】从架构和核心了解你的显卡
Tensor Core是NVIDIA推出的一种专为深度学习和高性能计算优化的处理器核心,专门针对深度学习中的矩阵运算进行优化。通过不断的创新和优化,Tensor Core能够提供更高的性能、更高的能效比和更广泛的应用支持,从而推动深度学习和人工智能技术的发展。每一代架构都是NVIDIA针对当时的市场需求和技术挑战进行的创新和优化,不断推动着图形渲染、AI计算和高性能计算的发展。Pascal架构是NVIDIA在2016年推出的GPU架构,用于其GeForce、Quadro、Tesla系列的显卡。
2024-04-03 01:13:38
4868
原创 深度学习之激活函数选择
深度学习激活函数汇总如果没有激活函数,即便再添加更多隐藏层,依然只能与仅含输入层的单层神经网络等价常见网络:CNN:RNN:非线性、可微性、计算简单、非饱和性、单调性、参数少GeLU、Mish > SELU > ELU > Leaky ReLU > ReLU以原点为中心的激活函数更好,如ReLU、Leaky ReLU等σ(x)=11+e−x\sigma(x)=\frac{1}{1+e^{-x}}σ(x)=1+e−x1优点:1、将很大范围数据压缩到(0,1),标准化化神经元输出;2、处处可
2024-04-02 00:23:09
1279
原创 深度学习之全面理解Self-Attention
Transformer 模型中大量使用了 self-attention机制 (Masked self-attention、Crosss attention)。Bert 相当于 Transformer 的 encoder 部分,GPT 相当于 Transformer 的 decoder 部分。encoder 编码信息, decoder 产生输出。Multi-Head Attention 多头注意力机制 在 Self-Attention 的基础上添加了 head 维度,用来处理不同类型的输入。
2024-04-02 00:10:35
967
原创 深度学习之RNN入门
Recurrent Neural Network,又称为递归神经网络,常用于NLP自然语言处理领域针对一些有明显的上下文特征的序列化输入,RNN赋予了网络记忆能力。工程中常用的是LSTM,它基于RNN。
2024-04-02 00:03:38
904
原创 深度学习之常用算子介绍
打开 onnx 模型图,可以看到它是一个有向无环图。除了 Input、Output ,其他都是算子(是操作,而不是节点)在ONNX(Open Neural Network Exchange)模型中,除了输入和输出,其他都是算子(Operations)。算子是表示神经网络模型中的不同操作或层的元素。一个ONNX模型由一系列算子组成,通过连接这些算子来定义模型的计算流程。
2024-04-02 00:01:06
6309
原创 快速入门使用tensorRT进行推理
GPU计算时间、排队时间和设备到主机延迟也是在特定场景下需要重点关注的指标,尤其是在计算密集和数据密集型的应用中。batch_size = 64时, througphout = 32613.9 qps,media latency = 0.017334 ms。batch_size 在 ONNX 中会经常设置为动态的, 然后在使用 tensorRT 推理时可以动态指定。随着batch_size的增大,系统吞吐量会下降,平均延迟有所增大。下面看不同batch_size, trt engine的推理时间。
2024-04-01 23:54:11
1851
原创 ONNX 模型的修改与调试
图一般是用一个节点集和一个边集表示的。神经网络本质上是一个计算图。计算图的节点是算子,边是参与运算的张量。可视化 ONNX 模型, 能看到所有算子节点的属性信息,参与运算的张量信息存储在算子节点的输入输出信息中。一个 ONNX 模型可以用 ModelProto 类表示。ModelProto 包含了版本、创建者等日志信息,还包含了存储计算图结构的 graph。GraphProto 类则由输入张量信息、输出张量信息、节点信息组成。
2024-04-01 10:55:38
1268
原创 深度学习之反向传播
::warning反向传播(英语:Backpropagation,意为误差反向传播,缩写为BP)::::::info反向传播时对多层人工神经网络进行梯度下降的算法也就是用链式法则以网络每层的权重为变数计算损失函数的梯度以更新权重来最小化损失函数.
2024-03-31 09:22:21
415
1
原创 【机器学习】浅谈聚类算法
k-means++是一种改进的k-means聚类算法,它通过更智能地选择初始聚类中心来提高聚类结果的质量。需要注意的是,K-means算法对于不同的初始化和数据分布可能会产生不同的聚类结果,因此在使用K-means算法时需要多次运行并选择最好的聚类结果。其中,Ci是第i个簇,x是Ci中的样本点,μi是Ci的质心(Ci中所有样本的均值),SSE是所有样本的聚类误差,代表了聚类效果的好坏。k-means||是k-means的变体,k-means||在初始化中心点时对kmeans的缺点做了规避,主要体现在。
2024-03-31 09:04:06
1165
1
原创 【机器学习】SVM(支持向量机,Support Vector Machine)重点
支持向量机是一种二类分类模型支持向量机学习方法包含构建由简至繁的模型线性可分支持向量机(linearsupportvectormachineinlinearlyseparablecase)线性支持向量机(linearsupportvectormachine)非线性支持向量机(non-linearsupportvectormachine)、要求数据必须线性可分纯线性可分的SVM模型对于异常数据的预测可能会不太准;对于线性可分的数据,线性SVM分类器的效果非常不错。
2024-03-31 08:56:20
965
1
原创 【机器学习】集成学习之Stacking(堆叠泛化)
Stacking(有时候也称之为stacked generalization,堆叠泛化)是指训练一个模型用于组合 (combine)其他各个模型。即首先我们先训练多个不同的模型,然后再以之前训练的各个模型的输出为输入来训练一个模型,以得到一个最终的输出。如果可以选用任意一个组合算法,那么理论上,Stacking可以表示前面提到的各种Ensemble方法。然而,实际中,我们通常使用单层logistic回归作为组合模型。
2024-03-31 08:46:13
25535
8
原创 【机器学习】浅谈XGBoost(极端梯度提升)
XGBoost是GBDT算法的一种变种,是一种常用的有监督集成学习算法;是一种伸缩性强、便捷的可并行构建模型的Gradient Boosting算法。XGBoost官网:XGBoost Github源码位置XGBoost支持开发语言:Python、R、Java、Scala、C++、GPU等。
2024-03-31 08:39:59
1900
1
原创 【机器学习】集成学习:随机森林与GBDT
RF的主要优点: 高效性、随机性、可解释性、高效性• 1. 训练可以并行化,对于大规模样本的训练具有速度的优势;• 2. 由于进行随机选择决策树划分特征列表,这样在样本维度比较高的时候,仍然具有比较高的训练性能;• 3. 给以给出各个特征的重要性列表;• 4. 由于存在随机抽样,训练出来的模型方差小,泛化能力强,能够缓解过拟合的情况;• 5. RF实现简单;• 6. 对于部分特征的缺失不敏感。
2024-03-31 08:37:01
1403
1
原创 【机器学习】浅析决策树
构建决策树的目的是使数据更容易区分开决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构建决策树来进行分析的一种方式,是一种直观应用概率分析的一种解法;决策树是一种预测模型,代表的是对象属性与对象值之间的映射关系;决策树是一种树形结构,其中每个内部节点表示一个属性的测试,每个分支表示一个测试输出,每个叶节点代表一种预测类别;决策树是一种非常常用的有监督的分类算法。
2024-03-31 08:32:19
777
1
原创 【机器学习】特征工程快速入门
所有一切为了让模型效果变的更好的数据处理方式都可以认为属于特征工程这个范畴中的一个操作;至于需求做不做这个特征工程,需要我们在开发过程中不但的进行尝试。常规的特征工程需要处理的内容:异常数据的处理 删除、填充数据不平衡处理文本处理:词袋法、TF-IDF多项式扩展、哑编码、标准化、归一化、区间缩放法、PCA、特征选择…将均值、方差、协方差等信息作为特征属性,对特征属性进行对数转换、指数转换…结合业务衍生出一些新的特征属性…
2024-03-31 08:28:45
1102
1
原创 【机器学习】浅谈逻辑回归
Logistic回归和Softmax回归都是在采用逻辑回归的思想来解决分类问题。逻辑回归是一种二分类模型,用于解决二分类问题。它通过将输入特征与权重相乘并加上偏置项,然后将结果通过一个Sigmoid函数(也称为Logistic函数)映射到0到1之间的概率值,用于预测样本属于某一类别的概率。Softmax函数是一种常用的多类别分类激活函数。它可以将一组实数转化为概率分布,使得每个类别的概率值都在0到1之间且总和为1。Softmax函数的计算公式是对输入向量中的每个元素进行指数运算,然后将结果进行归一化。
2024-03-31 08:26:05
1107
1
原创 【机器学习】浅谈梯度下降(Gradient Descent)
而对于SGD,每次更新参数只需要一个样本,因此若使用这30W个样本进行参数更新,则参数会被更新(迭代)30W次,而这期间,SGD就能保证能够收敛到一个合适的最小值上了。梯度下降通过迭代的方式来更新模型的参数,使得每一步的更新都朝着误差减小的方向前进。具体来说,梯度下降计算模型参数的梯度(即误差对参数的偏导数),然后按照梯度的方向和学习率的大小来更新参数值,直到达到收敛条件。此外,小批量随机梯度下降也可以避免陷入局部最优解,因为每个小批量的样本都是随机选择的,可以增加优化的随机性,有助于跳出局部最优。
2024-03-31 08:22:46
776
1
原创 【机器学习】快速入门回归算法
回归的全称是,“Regression towards the mean”。**直接翻译过来就是向着中间值回归。直白点说,就是在图像上给你一堆点,你来找一条线,然后让这条线尽可能的在所有点的中间。**这个找直线的过程,就是在做回归了。如下图所示进一步思考:为什么非要找这么一条尽可能的在所有点的中间的直线?我们面对的是一堆散乱的点,看不出具体的相关关系,而线能够体现趋势。所以,我们就是想办法来找一条尽可能在所有点的中间的直线,代表一个数据的整体趋势,让数据的整体关系更加清晰可见,这样就方便我们预判未来的情况。
2024-03-31 08:18:36
1013
1
原创 【机器学习】快速入门K近邻算法
• K近邻(K-nearst neighbors, KNN)是一种基本的机器学习算法,所谓k近邻,就是 k 个最近的邻居的意思,说的是每个样本都可以用它最接近的 k 个邻居来代表。给定一个二维空间的数据集 T = {(2,3)T,(5,4)T,(9,6)T,(4,7)T,(8,1)T,(7,2)T},请给出:特征空间的划分过程、kd树的构造过程。,对于小于该值的样本划分到左子树,对于大于等于该值的样本划分到右子树,对左右子树采用同样的方式找方差最大的特征作为根节点,递归即可产生KD树;
2024-03-31 08:15:42
766
1
原创 【机器学习】快速了解机器学习
机器学习(Machine Learning(ML))是一门从数据中研究算法的科学学科。根据已有的数据,进行算法选择,并基于算法和数据构建模型,最终对未来进行预测。机器学习就是一个模拟人决策过程的一种程序结构。"""总样本数 预测值 predicted conditiontotal population 正例 负例真实值 positive正例 真正例TP 假负例FNtrue condition negative负例 假正例FP 真负例FP"""
2024-03-31 08:12:38
1112
1
原创 github上传代码入门玩法
如果你的项目还没有初始化为Git仓库,需要先在本地项目目录下初始化它。打开终端或命令行工具,切换到你的项目目录:git init添加项目中的文件到Git仓库中:git add .这里,git add . 命令会添加当前目录下的所有文件到仓库。如果你只想添加特定文件,可以使用 git add。提交你的更改到本地仓库:“Initial commit” 是提交信息,你可以根据实际情况进行更改。将本地仓库连接到GitHub上你刚创建的仓库。
2024-03-31 07:59:10
943
1
原创 Redis常见面试题
添加数据时,将数据进行hash运算得到hash值,对应到bit位,将该bit位改为1,hash函数可以定义多个,一个数据添加会将多个(hash函数个数)bit改为1,多个hash函数的目的是减少hash碰撞的概率。位图:int[10],每个int类型的整数是4 * 8 = 32bit,则int[10]一共有320bit,每个bit非0即1,初始化时都是0。在开发测试环境中,我们一般搭建Redis单实例。查询数据:hash函数计算得到hash值,对应到bit中,若有一个为0,则说明数据可能在bit中。
2023-05-26 09:36:20
108
1
原创 Java中的类加载器
Tomcat使用自定义类加载器是为了解决一个Tomcat容器中的多个应用中存在的类同名问题。一个Tomcat容器中可以部署多个应用,各个应用中的类是独立的,全类名是可以相同的,如一个订单系统中可能存在com.article.User,另一个支付系统中可能也存在com.article.User。Tomcat启动后,这些应用都在同一个Java进程中。若Tomcat中只存在一个类加载器,如AppclassLoader,那么只能加载一个com.article.User,这是有问题的。
2023-05-20 20:40:26
241
1
原创 什么是线程池?怎么创建线程池?
线程池就是开辟一块内存空间,一次性创建出指定个数的线程放入线程池,当有任务来临时,从线程池中取一个线程为其提供服务,不用的时候就还回去。本质上是以空间换时间。
2023-05-19 19:17:40
138
原创 Java创建线程的几种方式
总结:共4种,继承Thread、实现Runnable、实现Callable、使用线程池创建。究其底层,都是采用实现Runnable,重写run()方法。由于Runnable是一个函数式接口,也可以使用lambda表达式实现。这种方法可以拿到线程异步执行的返回值结果。4. 使用线程池创建线程。
2023-05-19 18:34:27
139
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人