自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(105)
  • 收藏
  • 关注

原创 Java入门第6课

java的数据转化是容量小的部分向大的方向转,这个部分很简单,byte->short->int->long,char->int->long;有一些数据转化虽然是自动的,但是存在数据精度丢失,比如int->float, long->double,long->float;之前提到,整形常数默认是int,那么按照规则,就不应该存在short s = 10;这样的表达式,这个可以归类为特殊情况,常量int转比他容量小的,就需要容量小的类型的范围可以容纳这个数字。比如 byte b = 97;正确。

2024-04-06 19:56:40 131 1

原创 java入门第5课

1.1算数运算符(1).二元运算符加,减,乘,除,取余%,取余的运算结果只和左边的数值相关(2)一元运算符++,--,这里的自增自减运算和C语言一致1.2赋值运算符1.3扩展运算符1.4关系运算符略,只有instanceof需要注意,判断某个对象是否为某个类的实例,关系运算符的结果只能是布尔类型。不能和C语言一样写 int a = 1 > 3;1.5.逻辑运算符&&,||,!,^(异或)1.6.位运算符略过,只有>>>需要注意1.7 三元运算符?1.8 字符串连接符。

2024-04-03 01:31:55 239

原创 机器学习的特征选择方法

有时候特征太多了也是一个问题,容易过拟合。为了降低模型的复杂程度,降低过拟合的可能性,我们会减少需要的学习的特征。特征选择法主要有三种,分别是过滤法,包裹法和嵌入法。

2024-04-02 22:28:34 996

原创 java入门第3课

和c++一样,注释单行用双斜杠//,注释多行用/**/类和变量的命名规则和c++也差不多,只是多了个美元符号$(1)开头必须是下划线,美元符号,字母(2)除去开头可以用数字,下划线,美元符号(3)名字不能说Java已有的关键字。但是对于类名,第一个字母必须大写,这个不是语法规定的,但是我劝你这么做对于方法和变量首字母小写,其他部分大写首字母,可能初学者不知道什么是方法,以后就懂了。

2024-04-01 22:38:40 841

原创 java入门第2课

(1)java对大小写敏感(2)代码必须都在class里面(3)源文件编译成功后,会为每个类生成一个.class文件,一个文件里面可以有很多类,那么会生成很多class文件(4)main是程序的入口,格式固定为public static void main(String[] args)目前我用的是vi编辑器,初学者应该用一个轻量级的IDEA比较好。

2024-04-01 15:20:07 229

原创 java入门第1课

最近想要入门一下java,目标很简单,就是学习Java的基本语法,内置数据结构;至于数据库啥的往后再说。由于是入门,所以就没有太难的东西,全都是基本的,还要个人吐槽,如果有错误的观点,就不改正了。

2024-04-01 14:59:33 149

原创 机器学习的样本选择

最近采集了很多生理数据,主要是心电信号,心电信号的特点是有效信号分布集中,频率低,幅度低,容易被噪声污染,使用小波变换,低通滤波器来进行预处理,但是在日常生活中采集的数据,总有无法去掉的噪声,而且不同的人情况还不一样,肯定会有垃圾样本的。我们做机器学习算法的时候,会对数据进行划分,划分为训练集,验证集和测试集;

2024-04-01 01:45:30 738

原创 Adboost算法

AdaBoost算法每次都是使用全部的样本进行训练,每一轮训练结束后,得到一个基学习器,并计算该基学习器在训练样本的预测误差率,然后根据这个误差率来更新下一轮训练时训练集合样本的权重系数和本轮基学习器的投票权重,目标是使得本轮被错误预测的样本在下一轮训练中得到更大的权重,使其得到更多的重视,并且预测越准确的基学习器在最后集成时占的投票权重系数更大,使其受到更多的重视,并且预测越准确的基学习器在最后集成时占的投票权重系数越大。

2024-01-06 16:56:53 962

原创 决策树模型

决策书就是一种树状的模型,可以用来做分类和回归。这种分类方式很好理解,相当于分岔路一样,满足某一个条件就走对应的道路,然后抵达不同的终点。决策树有很多类型,基本的有ID3决策树,C4.5决策树,CART决策树,他们主要经过三个步骤,特征选择,生成决策树,决策树剪枝。

2024-01-01 23:55:22 383

原创 朴素贝叶斯

这是一种基于贝叶斯定理和特征条件独立假设的分类方法。所谓独立条件,就是两个事件之间相互之间没有影响,在机器学习中,就要求特征之间没有联系,实际上,这种要求一般是无法满足的。对于结果,我们可以根据发生过的情况来推测。表示为p(y/x),也就是在特征x的提示下,y发生的概率。

2024-01-01 14:44:42 376

原创 无监督学习(下)

高斯混合模型是一种概率模型,它假定实例是由多个参数未知的高斯分布的混合生成的。从单个高斯分布生成的所有实例都形成一个集群,通常看起来像一个椭圆。每个集群都可以由不同的椭圆形状,大小,密度和方向。高斯模型的均值代表集群的中心,方差代表方向这个模型假定一个数据集是从K个高斯分布的集合中产生,但是每个集合都有一个权重,代表产生一个实例到数据集的可能性或者贡献(我暂且这么理解,要知道更严格的说法可以取看原文),一个实例的位置x(i)服从某个高斯分布。

2023-12-31 01:24:23 656 1

原创 无监督学习(上)

我们实际用到的项目大都是有监督的,而人工智能未来的一大难点将会是无监督学习。在前面说过的降维算法,大部分都是无监督,除了LDA。无监督算法有聚类,密度估计,常常用在做分类或者异常检测上。

2023-12-29 02:35:35 949

原创 深度学习之RNN

在时间t的时候,对于单个神经元来讲它的输出y(t)如下wx是对于输入x的权重,wy是对于上一时刻输出的权重所以循环神经网络有两个权重。如果有很多这样的神经元并排在一起则在t时刻的输出y为这时输入输出都是向量。

2023-12-28 19:11:09 646

原创 c++对象模型

对于创建一个类,需要多大的内存?这其实是在考虑c++的对象的布局,在某本c++名著中,作者为了说明这一点,引入了几种模式,让我们主动思考,如果布局显得简单又高效。这些引入略过,直接进入主题。

2023-12-28 14:10:48 480

原创 降维的技术

有时候机器学习所使用的特征太多了,几百上千个,这个时候计算量很大,可能需要减少对一些特征进行降维。当然,对特征进行降维不意味着对特征进行筛选,我曾经以为,所谓的降维,就是选择一些更加重要的特征,但实际上并不是,这个降维其实就是对原本的矩阵进行变换,然后让原矩阵变小了,特征还是那些特征,只是它们融合到了新矩阵,这种融合的手段,实际上改变了原来特征的性质,所以一定要小心使用。降维有好几种方法,其中常见的降维手段有主成分分析(PCA),线性判别分析(LDA),局部线性嵌入(LLE)。

2023-12-25 00:50:13 829

原创 随笔:集成学习:关于随机森林,梯度提升机的东拉西扯

这里不会描述算法过程。当我们有许多学习器对同一个任务做出判断,他们预测的概率可能各不相同,比如预测一个男生(小徐)会不会喜欢另一个女生(小雪),支持向量机算出来小徐爱上小雪的概率是0.8,朴素贝叶斯认为是0.3,决策树觉得是0.7。假设大于0.5算认可。我们不知道该听谁的,就按照最简单的两个方法来决定:(1).少数服从多数:有两个分类器的预测概率都大于0.5,我们就认为是真的,小徐会喜欢小雪。这种硬核决策的方法被称为硬投票。

2023-12-20 02:24:28 623 1

原创 tensorflow入门 自定义模型

如果我们写得再详细一点,可能要加入built,如果需要保存和加载模型,我们需要get_congit和save_congit,总之,基本的样子就是如此。首先呢,我们看有几个部分,dense不需要我们实现了,我们就实现Res,为了实现那个*3,我们注意这个res可能需要多个res堆叠。这样我们就能实现一个可以循环的Res了,call是必须的,因为在计算的时候需要它。前面说了自定义的层,接下来自定义模型,我们以下图为例子。然后我们基于上面的自定义层,实现左边的模型。我觉得在此以及无需多言了。

2023-12-19 00:47:08 636

原创 tensorflow入门 自定义层

(5).get_config是必须的,初始化父类的权重,以及自己的某些参数,当然不仅仅是unit和激活函数,值得注意的是,这里使用了keras.activation.serialize方法保存激活函数的完整配置。(2).build方法的作用是通过为每个权重调用add_weight()方法来创建层的变量,keras会自动推测输入的维度,也即是batch_input_shape。创建自定义的层也很灵活,可以多输入多输出,只不过需要再call返回的时候,分开返回,比如三个输入,两个输出的自定义层。

2023-12-18 19:39:45 621

原创 机器学习的数据管理

2.对于一个大型的机器学习项目,就需要一个大型的架构方式,因为这样的机器学习项目,往往需要从各处抽取数据资源,这样的数据可能是结构化的,也可能是非结构化的,也可能是半结构化的,表格,图像,文本,都有可能是项目所需要的数据。数据湖的数据处理能力提供了数据处理框架和底层计算资源来处理不同目的的数据,比如数据纠错,数据转换,数据合并,数据拆分,数据合并,和机器学习特征工程。比如数据的范围,数据分布,数据类型或者空缺值。我们需要对数据进行分析,一般是分析数据的相关性,数据的统计,数据的分布,一般有下面这下内容。

2023-12-17 16:55:44 1677 1

原创 机器学习和机器学习解决方案架构

(1).数据探索和实验:数据科学家可以使用机器学习平台进行数据探索,实验,模型构建,模型评估。(1).业务理解:确定机器学习要解决的问题,以及确定机器学习项目是否成功的业务性能指标。(2).数据管理和大规模数据处理:对数据进行存储,访问,清洗和特征工程等等。(5).模型监控:由于数据的变化,我们可能需要监视这些变换,根据情况调整。(4).模型托管和服务:为机器学习模型的预测和批量处理提供技术能力。(5).模型管理:管理和跟踪经过训练的机器学习模型。(2).数据理解和数据准备:根据业务收集数据。

2023-12-16 02:02:20 121

原创 tensorflow定制模型和训练算法

这里先实现一个Lenet-5模型tensorflow构建模型有两种方法,一种是顺序式,一种是函数式,我用的是函数式。输入28,28,1卷积层15,5,6平均池化层12,2卷积层25,5,16平均池化层22,2卷积层35,5,120全连接层184输出层10PS:中间隐藏层使用的是函数为tanh,末尾输出为softmax我修改了激活函数,使用的是RELU,并在每一层输出后使用了归一化层.依次为例,如果需要修改这个模型的组件,应该有哪些步骤呢?

2023-12-15 23:52:46 183

原创 机器学习模型评估指标

预测和实际之间误差的绝对值之和。

2023-12-07 14:49:33 1031

原创 1.使用tensorflow

tensorflow对张量的操作实际上和numpy差不多,不够有所差距,numpy的数据可以随时被修改,但是tensorflow的数据要分情况。

2023-10-31 00:37:20 709 1

原创 c++ 网络编程与协议的设计方法

TCP协议发送的是字节流,前后之间的间隔在哪里是不确定的,所有有可能出现粘包现象。解决粘包问题主要有三个办法(1).发送固定长度的包,这样接受方也接受固定长度,很显然这种办法很死板。(2).指定字符串位为包的结束标志。这种方法有FTP和SMPT协议采用。(3).使用包头+包体的方法。这种格式的包一般分为两个部分,包头和包体,包头是固定大小的,且包头必须包含一个字段来说明接下来的包体有多大。比如://指定包头的大小。

2023-10-22 00:55:52 213

原创 c++网络编程

c++在windows和Linux上的网络开发流程实际上都差不多,用的API也一样。

2023-10-20 14:04:51 260

原创 总结面试1.多线程与资源同步

进程是计算机中实际运行的一个程序。每个进程都有自己的独立空间和上下文堆栈,进程为线程分配资源,线程才是进程中执行的基本单位。1.主线程推出,支线程也将退出吗?window系统是这样,Linux不会,主线程退出,子线程会变成僵尸线程。2.某个线程崩溃,会导致进程推出吗?每个线程都是独立执行的单位,都有自己的上下文堆栈,一个线程的崩溃不会影响其他线程。但是通常之情况下,线程的崩溃会导致进程的退出,进程退出会导致其他线程退。

2023-10-12 00:29:11 190

原创 第1次 更多的bash shell命令

程序都是进程在运行,进程里面有很多线程,面试经常会问进程和线程的区别,线程可以访问另一个线程的什么什么的,这些我都听腻了,区别就是进程会分配程序需要的空间,创建线程需要的资源,用一个中二的说法:进程就是世界,线程是世界意志的执行者。线程可以访问进程的各种资源,但是不能访问线程自己的堆栈。查看进程的命令是ps,它有很多搭配的参数,比如ps -e 输出全部进程,ps -f显示进程的完整信息,还可以组合ps -ef实时检测进程的运行情况:top进程显示的信息有哪些?UID 启动这些进程的用户。

2023-10-07 04:11:01 942

原创 第0次 序言

总之,这条浮力定律献祭了一个可怜的工匠,可能在某本寓言书上说:这是贪婪的代价,我们有智慧的人应该学会谦逊和满足。本文完全是闲聊,自娱自乐,我觉得做开发是一件很快乐的事情,但是工作是开发就是一个悲剧了,当初选择去当公务员也是这么一回事,我觉得工匠可以造出王冠来,但是戴王冠的又不是它自己,得不到荣耀,也得不到对得起这份辛勤的money,更重要的是欣赏王冠的是少数人,不像美丽的雕像或者画作,纯粹自娱自乐罢了,还不如直接把自己卖给国王,给国王当私人的工匠,不用担心明天接不到打铁的活计,哈哈哈。

2023-10-06 00:31:46 156

原创 c语言的链接(静态链接和动态链接)以及a.out的简述

链接过程分类两种,动态链接和静态链接。如果函数库的一份拷贝是可执行文件的物理组成部分,则为静态链接,动态链接生成的可执行文件只包含了文件名,在运行时,程序会自动寻找所需要的函数库。函数只有在运行的时候才会被解析调用,它是在main函数之前就决定好了。静态链接与动态链接的优缺点就很明显了。静态链接提前把需要的函数都载入到了可执行文件中,所有更加独立,速度更快。缺点就是程序更新不方便,生成的可执行文件更大。动态链接有点更多了,它可以随时更新自己的功能,而不需要重新编译,生成的文件更小。

2023-10-05 22:24:33 237

原创 卷积神经网络

先引入一个二维卷积:表示f的索引(a,b)和g的索引(i-a,j-b)的对应和相加。对于一个二维数组A,其维度为w,h,使用一个卷积核为m,n,在不加以填充的前提条件下,输出维度为(w-m+1, h-n+1)。

2023-10-05 01:29:53 913 1

原创 多头注意力机制

实际上很简单,自注意力层的输出空间被分解为一组独立的子空间,对这些子空间分别进行学习,也就是说,初始的Q,K,V三组独立的密集投影生成三组独立的向量[1],每个向量都通过神经注意力进行处理,然后将多个输出拼接为一个输出序列[2],然后将输出序列经过线性变换[3],每个这样的子空间叫做一个头。密集投影层是可学习层,因此投影过程是可以学习的,独立的头也有助于该层为每个词元学习多组特征,其中每一组内的特征彼此相关,但与其他组的特征几乎无关。(1).Q,K,V三组投影,实际上就是线性变化Y = W X。

2023-10-02 15:45:43 301

原创 深度学习-学习率调度,正则化,dropout

正如前面我所说的,各种优化函数也依赖于学习率,保持学习率恒定总是有所限制,在执行梯度下降过程中,我们可以使用各种方法来调节训练过程的学习率,这里只是稍微介绍一下,不会写代码实现的。同时,顺便几种其他的手段防止过拟合。

2023-09-27 02:27:31 528 1

原创 深度学习-优化器

最开始的梯度下降算法,更新权重的方法是theta = theta - learning_rate * gradient(loss),loss是损失函数。但是这种方法只关心当前的梯度,如果坡度较缓,则它依然会以一种缓慢的速度下降,我们先举个例子,使用梯度下降来寻找y = x*x的最小值。使用z = (x+y)^2当作例子更好点,但是代码也写得多,以后有空再改吧。代码使用tensorflow实现。

2023-09-27 01:23:16 381 1

原创 深度学习-梯度裁剪

缓解梯度爆炸的另一个技术是在反向传播期间裁剪梯度,使他们永远不会超过某个阈值,这种技术常用于循环神经网络。比如设置裁剪范围为[-1,1],则梯度值都会被限制在[-1,1]之间,如果计算了一个梯度值为[0.5,10],裁剪之后,梯度就会变成[0.5, 1],这会改变梯度下降的方向,由于第二个轴的方向被改变,因此下降方便是对角线方向。需要注意的是,如果L2的范数大于你所设置的裁剪值,则会被整个裁剪掉。

2023-09-25 19:52:16 197

原创 深度学习-批量归一化

这样一来,在第一层加一个BN操作,我们就不用对原始数据归一化了。正如前言,神经网络的某一层的输入方差和输出方差不变,就是一个理想的状态,但是在信号的传播过程中,会发生漂移现象,即便是输入的时候经过了归一化,也很难在后续的传播过程种收敛,因此科学家提出了批量归一化(Batch Normalization).以上是在训练期间的过程,但是在测试的时候,就会有问题了,因此预测可能是单个样本,无法计算均值和方差,所以在训练期间,收集到足够的信息后,估测一个均值和方差,在预测的时候,使用估测的均值和方差。

2023-09-25 19:26:24 66

原创 梯度爆炸问题和梯度消失问题的一种解释和相应的解决方案

梯度爆炸是指梯度越来越大,逼近饱和,各层需要更新较大的权值,这可能是因为激活函数和初始化方法配合有问题,比如使用sigmoid和标准正态分布的初始化方案,导致输入的方差与输出的方差越来越大,最后输出层会发生梯度爆炸现象,sigmoid的期望值应该是0.5,而使用标准正态分布的初始化方案,总归是不太好的。ReLU = max(0, x),他的梯度只有0和1两种,他比饱和函数多了几个好处,一个是不会有反向的负值,神经网络的负值代表了噪声和一些无法解释的东西,另一个是不会导致梯度消失。3.介绍非饱和激活函数。

2023-09-25 01:52:01 87

原创 注意力机制

概念没什么好说的,反正大家都会说,具体实战怎么写才是最为重要的。

2023-09-24 17:01:42 821

原创 深度学习的初始化(暂时)

神经网络的初始化十分重要,也是深度学习能够大获成功的一个条件,一般来讲,神经网络的初始化方法为glorot初始化,它是根据神经网络当前这一层的输出节点和输入节点来进行初始化的,详细的问题可以查找相关的论文。另外一点,不同的激活函数,使用的初始化方法也不一样。fan_in代表输入节点数,fan_out代表输出的节点数,fan_ave = (fan_in+fan_out)/2。

2023-09-24 13:30:54 87

原创 c++多线程

多线程的概念就不需要多说了,多线程的主要难点在于争用条件,撕裂,死锁,和伪共享争用条件很简单,也就是多个线程要访问共享资源。比如一个线程读取了内存的数据10,它将其增加了1变成了11,正当他写入到内存的时候,另一个线程登场,它读取了内存的数据,此时内存的数据还是10,它将其减少了1,然后写入到内存,内存现在的数据是9,之前的线程来了,它也要写入自己的数据11。这就偏离我们的目的。

2023-09-24 01:16:07 83

原创 c++小问题 左值引用和右值引用

引用就是引用对象本身,这种情况下,绝对不要出现空指针问题,引用对象要存在,左值引用和右值引用都是引用,正如马克思主义描述物质和精神一样,左值引用和右值引用也是从区别来辨识的。右值引用是指一个临时对象,不与任何对象相联系的值。比如纯粹的数值1,2,3,......左值就不用说了,用的比较多,比如函数的返回值,为了减少拷贝,而使用引用,这里的引用一般是指左值。在临时对象需要被记录的时候,比如函数返回一个临时的对象,则需要用到右值引用了。3.左值和右值引用的作用。

2023-09-21 00:55:55 101

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除