Sunrise

`长路漫漫,唯剑作伴`


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

Linux shell命令

发表于 2021-12-28 | 分类于 Linux

Linux shell命令

vim程序编译器

vi分为3种模式,分别是一般命令模式,编辑模式与命令行模式。

  • 一般命令模式:以vi/vim打开一个文件就直接进入一般命令模式,在该模式下可以进行光标移动、复制、粘贴、删除操作。

  • 编辑模式:在一般命令模式下,输入【i、o、a、r】(大写也可),进入编辑模式。按【ESC】键回到一般命令模式。

  • 命令行模式:在一般命令模式下,输入【: / ?】中的任何一个,进入到命令行模式,光标会移动到最下面一行,可以进行读取、保存、批量替换字符、退出vi、显示行号等操作。

编辑模式与命令行模式之间不可互相切换。

一般命令模式下的快捷键

阅读全文 »

遗传算法

发表于 2021-12-18 | 分类于 算法

遗传算法

基本概念

遗传算法(Genetic Algorithm,简称GA)

遗传算法的基本思想可归为三点:

1)遗传:子代总是和亲代相似。

2)变异:子代和亲代有某些不相似的现象。

3)选择:具有精选的能力,它决定生物进化的方向。

要点1:遗传算法按照一定的规则生成经过基因编码的初始群体,

要点2:然后从这些代表问题的可能潜在解的初始群体出发,挑选适应度强的个体进行交叉(或称交配、交换)和变异,以期发现适应度更佳的个体,

要点3:如此一代代地演化,得到一个最优个体,将其经过解码,该最佳个体编码则对应问题的最优解或近似最优解。

术语:

串:算法中的二进制串,对应于遗传学中的染色体。染色体是进化的信息载体。染色体可能发生突变,并因为这种突变,可能生成更好的、更能适应环境的后代。

基因:基因是串中的二进制位之数,基因用于表示个体的特征。基因是染色体遗传功能的最小操作单位。

基因位置:一个基因在串中的位置称为基因位置,有时也简称基因位或基因座。

基因特征值:在用串表示整数时,基因的特征值与二进制数的权一致。

种群:个体的集合称为种群,或称群体。生物的进化不是通过单个个体来实现的,而是一代代的种群同时进行。

种群大小:种群中个体的数量称为群体的大小。

适应度:适应度表示某一个体对于环境的适应程度。在GA中,也称做适值函数,用以估计个体的优劣。适应度值越高,被选来交配和进行后继遗传行为的概率也就越大。对于给定的优化问题,将其目标函数作为适应度函数。

阅读全文 »

无监督学习--聚类算法

发表于 2021-12-11 | 分类于 算法

无监督学习–聚类算法

聚类算法是一种无监督学习算法,监督学习指的是我们的训练数据有一系列标签,我们通过假设函数去拟合它,而在无监督学习中,我们的数据不带有任何标签

聚类的定义

将物理或抽象的对象的集合分组成为由类似的对象组成的多个类的过程被称为聚类。 同一类中的对象之间具有较高的相似度,而不同类中的对象差别较大。

注:相似度是基于描述对象的属性计算的,计算是对对象之间距离进行计算

基于划分的方法–K-means聚类

阅读全文 »

感知机与BP算法

发表于 2021-12-04 | 分类于 算法

感知机与BP算法

M-P 神经元模型 [McCulloch and Pitts, 1943]

输入:来自其他n个神经元传递过来的输入信号(特征值)

处理:输入信号通过带权重的连接进行传递, 神经元接受到总输入值将与神经元的阈值进行比较

输出:通过激活函数的处理以得到输出

激活函数

阅读全文 »

决策树

发表于 2021-11-27 | 分类于 算法

决策树

决策树的概念

1、决策树是一种分类器,是一个有向、无环树。

2、树中根节点没有父节点,一个节点可以有1-2个或者没有子节点。

3、每个叶节点都对应一个类别标识C的值;每个内部节点都对应一个用于分割数据集的属性Xi,称为分割属性;每个内部节点都有一个分割判断规则qj。

4、节点n的分割属性和分割判断规则组成了节点n的分割标准。

决策树原理

1、决策树原理:归纳推理

2、归纳:是从特殊到一般的过程

3、归纳推理:从若干个事实表现出的特征、特性或属性中,通过比较、总结、概括而得出一个规律性的结论。

4、归纳推理的基本假定:任一假设如果能在足够大的训练样本集中很好地逼近目标函数,则它也能在未见样本中很好地逼近目标函数。

阅读全文 »

朴素贝叶斯分类

发表于 2021-11-20 | 分类于 算法

贝叶斯分类(朴素)

• 是一种统计学分类方法

• 可以用来对一个未知的样本判定其属于特定类的概率

• 分类模型是在有指导的学习下获得

• 分类算法可与决策树和神经网络算法媲美

• 用于大型数据库时具有较高的分类准确率和高效率。

基础概念

朴素贝叶斯分类的假设前提:类别C确定的情况下,不同属性(X1,X2)间是相互独立的,即条件独立。(朴素即为条件独立)

即:C确定下,P(X1,X2)=P(X1)P(X2) ;或表示为:P(X1,X2|C)=P(X1|C)P(X2|C)

设X是未知类别的数据样本(属性值已知),H为假定:X属于某特定类的类C。分类问题即为,确定P(H|X)——给定观测数据样本X,假定H成立的概率。

后验概率:P(H|X),在条件X下,H的后验概率

先验概率:P(H)

贝叶斯定理

注:P(X/H)相当于已知带标签的数据,即有导师了。

换个表达形式就会明朗很多:

阅读全文 »

关联规则--Apriori算法

发表于 2021-11-13 | 分类于 算法

关联规则

啤酒与尿布的故事:

在美国,一些年轻的父亲下班后经常要到超市去买婴儿尿布,超市也因此发现了一个规律,在购买婴儿尿布的年轻的父亲们中,有30%~40%的人同时要买一些啤酒。超市随后调整了货架的摆放,将尿布和啤酒放在一起,因此,明显增加了销售额。

兴趣度度量

1、兴趣度度量的概念

挖掘出的模式(规律的表示形式)的简洁性、确定性和实用性即为兴趣度度量。

2、兴趣度度量的必要性

大量的数据 –> 挖掘出大量的规则 –> 规则一小部分是用户感兴趣的 –> 有必要进行兴趣度度量

3、兴趣度度量方法

简洁性度量:模式的便于人理解的度量

确定性度量:模式的可信性

方法:对于关联规则,确定性度量使用置信度。

设A和B为项目集合,A与B关联的规则A–>B的置信度定义为:

置信度(A–>B)= 同时包含A和B的元组数/包含A的元组数

举例:对某计算机商店购买物品的相关情况进行挖掘,得到一个置信度为85%的关联规则:

buys(X,”computer”) –> buys(X,”printer”)

意味着买计算机的顾客85%也买打印机。A的元组数为买计算机的事务数(顾客数),同时包含A和B的元组数为买计算机同时又买打印机的事务数(顾客数)。

实用性度量:模式的有用性

方法:对于关联规则,实用性度量使用支持度。

设A和B为项目集合,A与B关联的规则A”B的支持度定义为:

支持度(A–>B)= 同时包含A和B的元组数/元组总数

举例:对某计算机商店购买物品的相关情况进行挖掘,得到一个支持度为30%的关联规则:

buys(X,”computer”) –> buys(X,”printer”)

意味着该计算机商店的所有顾客的30%同时购买了计算机和打印机。元组总数为购买计算机或购买打印机的事务数(顾客数),同时包含A和B的元组数为买计算机同时又买打印机的事务数(顾客数)。

阅读全文 »

关于神经网络的一些调参经验

发表于 2021-11-03 | 分类于 深度学习

关于神经网络的一些调参经验

训练损失不下降

关于训练损失不下降,根据我的一些经验和理论知识,可以从以下角度来分析

首先,从数据集来分析:

  • 是否数据集存在比较多的标注错误?
  • 针对类似分类的项目,是否数据集分布不均衡,某些类别的样本数量太少?
  • 数据集特征不明显,举个验证码的例子,很多字符类的验证码,为了不让别人破解,会加上背景、斑点和干扰线等,如果这些干扰元素影响很大,人类肉眼分辨都存在难度,那直接丢给神经网络学习也是很难的,你需要想办法去除干扰元素,使数据特征尽可能的明显。

其次,从数据预处理来分析:

  • 是否未进行归一化,比如图片像素值是否除以255;
  • 是否未打乱数据集,不打乱数据集的话,会导致网络在学习过程中产生一定的偏见问题;
  • 是否正确对应数据和标签,比如在预处理后将训练数据和标签输入到神经网络时,因为写了个bug,导致对应错乱;

最后,从模型结构和参数来分析:

  • 激活函数、损失函数是否选错了?

  • 优化器和学习速率不合适,需要调整;

  • 模型结构太简单,学习能力不够;

  • 正则化过度,L1、L2和dropout是用来防止过拟合的,如果训练集loss下不来时,就要考虑一下是不是正则化过度,导致模型欠拟合;

  • Batch_Size过大会导致收敛很慢,损失下降也就很慢,给人一种训练损失不下降的感觉;

  • 模型训练遇到瓶颈

    这里的瓶颈一般包括:梯度消失、大量神经元失活、梯度爆炸和弥散、学习率过大或过小等。

阅读全文 »

使用Pytorch识别字符验证码

发表于 2021-09-23 | 分类于 深度学习

使用Pytorch识别字符验证码

之前已经学习过利用Keras搭建神经网络模型来识别字符验证码,近期又学习了pytorch实现卷积神经网络相关的技术,正好遇到一个验证码识别的需求,所以尝试使用pytorch来实现。

数据预处理

要训练的验证码如下所示:

其为中文汉字的简单运算,实际上仅包括零壹贰叁肆伍陆柒捌玖加减乘等于,这15个汉字,等于可以不识别(其实识别也完全没问题,只不过问题能简化就尽量简化嘛),那最后也就是总共要识别13个汉字,分类数就是13。

另外我们可以用’0123456789+-x’来代替汉字,避免文件名称无法使用汉字(windows下open-cv不能读取带有中文路径或文件名称)的问题。

下载并标注了1000张验证码,观察其字体颜色和干扰线、点均多变,无法根据特定规则将其区分;另外,尝试中值模糊、均值模糊和高斯模糊,均得不到较好的效果(肉眼观察)。只有灰度化和二值化后,感觉稍微变得清晰了一些。

另外,针对数据集我还统计了一下各个类别的数量是否均衡(主要怕有的文字训练样本太少,训练效果差)。

1
2
{'捌': 206, '减': 346, '肆': 220, '柒': 205, '零': 200, '伍': 214, '加': 358, 
'玖': 189, '壹': 195, '叁': 191, '陆': 206, '乘': 297, '贰': 176}

数据集的分布情况如上数据,总体还算均衡,那就表示可以开始处理数据和进行训练了。

阅读全文 »

中文点选验证码——语序

发表于 2021-09-10 | 分类于 自然语言处理

中文点选验证码——语序

前面一直在研究文字点选验证码的文字识别,在文字识别之后,对于有语序要求的,还需要我们自己去按照正确的语序顺序去点击才能通过,例如:

外圆内方

积少成多

得道者多助

利用结巴分词技术可以解决此问题,但是仅限于词语效果较好,对于古诗或者谚语等效果比较差;其中还借助了结巴分词得dict.txt,其中保存了常见词得词频和词性,在使用得时候可以根据自己的需求进行调整。

阅读全文 »
1…567…12
chenxi

chenxi

116 日志
11 分类
213 标签
Links
  • Docle
  • Swift
© 2025 chenxi
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.4