自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(95)
  • 资源 (1)
  • 收藏
  • 关注

原创 几种预训练模型微调方法和peft包的使用介绍

Adapter 方法不需要微调预训练模型的全部参数,通过引入少量针对特定任务的参数,来存储有关该任务的知识,降低对模型微调的算力要求。具体的,给每个任务定义 Prompt,拼接到数据上作为输入,同时 freeze 预训练模型进行训练,在没有加额外层的情况下,可以看到随着模型体积增大效果越来越好,最终追上了精调的效果。PEFT(Parameter-Efficient Fine-Tuning,参数高效微调),是一个用于在不微调所有模型参数的情况下,高效地将预训练语言模型(PLM)适应到各种下游应用的库。

2023-10-11 22:04:04 1555

原创 从GCN到RGCN

简单介绍了Graph上的任务,图表示学习的发展历史,以及介绍了GCN,RGCN原理,参考了各位大佬的解读,有错误的地方欢迎指出

2022-06-08 20:57:39 3268 3

转载 GCN图卷积网络入门详解

在这篇文章中,我们将仔细研究一个名为GCN的著名图神经网络。首先,我们先直观的了解一下它的工作原理,然后再深入了解它背后的数学原理。为什么要用Graph?许多问题的本质上都是图。在我们的世界里,我们看到很多数据都是图,比如分子、社交网络、论文引用网络。图的例子。(图片来自[1])Graph上的任务节点分类:预测特定节点的类型。链接预测:预测两个节点是否有联系社区检测:识别密集联系的节点群落。网络相似性:两个(子)网络的相似性有多大?机器学习的生命周期在图中,我们有节点特征(代表节点的数

2022-03-10 11:42:22 1166

转载 迭代与递归的区别

基础不牢,地动山摇。迭代和递归的区别:从“编程之美”的角度看,可以借用一句非常经典的话:“迭代是人,递归是神!”来从宏观上对二者进行把握。递归:重复调用函数自身实现循环称为递归;递归实际上不断地深层调用函数,直到函数有返回才会逐层的返回,递归是用栈机制实现的,每深入一层,都要占去一块栈数据区域,因此,递归涉及到运行时的堆栈开销(参数必须压入堆栈保存,直到该层函数调用返回为止),所以有可能导致堆栈溢出的错误;但是递归编程所体现的思想正是人们追求简洁、将问题交给计算机,以及将大问题分解为相同小问题从而解

2020-11-25 16:03:52 684

原创 动态规划求解最大子序列和

1 求解最大子序列和题目给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: nums = [2, 3, -6, 2, 4]输出: 6解释: 连续子数组 [2,4] 的和最大,为 6。2 方法分析本节来源:https://leetcode-cn.com/problems/maximum-subarray/solution/xiang-xi-jie-du-dong-tai-gui-hua-de-shi-xian-yi-li/解题思

2020-09-07 20:31:44 2156

原创 基于HMM的词性标注方法

文章目录1 HMM模型概念2序列标注问题 (Sequence Labeling Problem)3 基于HMM的词性标注方法3.1 HMM词性标记模型3.2 HMM词性标记计算3.3 预测问题(解码问题)4 HMM词性预测的缺点1 HMM模型概念首先来理解以下什么是HMM,HMM是隐马尔可夫模型(Hidden Markov Model)的简称,是一种统计模型,它用来描述一个含有隐含未知参数的马尔可夫过程。其难点是从可观察的参数中确定该过程的隐含参数。然后利用这些参数来作进一步的分析。为了比较容易上手,

2020-09-03 20:04:25 5017

原创 使用matplotlib的savefig保存时图片保存不完整解决方法

很多时候再用matplotlib的savefig保存时图片,直接使用的是:plt.savefig("./picture_name.png")以为它会自动保存完整图片,今天画了个雷达图,保存后发现和想象中的不一样,图片保存不完整,如下:查阅资料后,最终解决方法是,在savefig()的参数中添加bbox_inches = 'tight'。plt.savefig("./picture_name.png", bbox_inches='tight')保存后的图片:...

2020-08-14 16:35:09 2580

原创 调整matplotlib的图例legend的位置

很多时候再用matplotlib画图例时,直接使用的是:plt.legend(lab)以为它会自动调整图例的位置,今天画了个雷达图,发现图例位置和想象中的不一样,如下:经查资料,原来可以legend 下的loc和bbox_to_anchor参数对 图例的位置进行调整:代码如下:plt.legend(loc='String or Number', bbox_to_anchor=(num1, num2))其中loc参数遵循以下的表格:StringNumberupper r

2020-08-14 16:21:08 10676

原创 利用Adobe illustrator CS6 把pdf文件转换成矢量图,并在word中编辑

1.要求:把图片保存或导出成pdf文件,然后转换成图片再导入word里,要求图片要高清的。2.分析把图片保存或导出成pdf文件,然后转换成图片再导入word里,可是这样做难免会有些失真,很难保证能图片质量。近期探索到,pdf文件之所以放再大也不失真,是因为pdf文件是矢量图,但pdf文件不能直接用到word上。经查资料,应该先把pdf文件转换成word能打开的矢量图,所以利用Adobe illustrator CS6 把pdf文件转换成矢量图,果然,失真的问题得到了解决。3.例子假设目前已利用

2020-08-14 15:20:22 9478 1

转载 User-Agent 大全

分享几个常见的User-Agent吧,复制粘贴过来的,谢谢原创。window.navigator.userAgent 1) ChromeWin7:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1 2) FirefoxWin7:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20

2020-08-09 15:10:58 751

原创 关于编程解决问题时的问题定位和数据结构的选择

假设现在面对一个实际的算法问题,则需要从以下两个方面进行思考。1. 问题的分析思路首先,我们要明确目标。 即用尽可能低的时间复杂度和空间复杂度,解决问题并写出代码;接着,我们要定位问题。 目的是更高效地解决问题。这里定位问题包含很多内容。例如:这个问题是什么类型(排序、查找、最优化)的问题;这个问题的复杂度下限是多少,即最低的时间复杂度可能是多少;采用哪些数据结构或算法思维,能把这个问题解决。为了方便理解,下面我们来举一个例子,在一个包含 n 个元素的无序数组 a 中,输出其最大值 ma

2020-08-08 21:38:55 628

原创 动态规划

1. 什么是动态规划从数学的视角来看,动态规划是一种运筹学方法,是在多轮决策过程中的最优方法。那么,什么是多轮决策呢?其实多轮决策的每一轮都可以看作是一个子问题。从分治法的视角来看,每个子问题必须相互独立。但在多轮决策中,这个假设显然不成立。这也是动态规划方法产生的原因之一。2. 最短路径问题接下来看一个非常典型的例子,最短路径问题。如下图所示:每个结点是一个位置,每条边是两个位置之间的距离。现在需要求解出一条由 A 到 G 的最短距离是多少。不难发现,我们需要求解的路线是由 A 到 G,这就

2020-08-07 21:05:35 10423 1

原创 常见的4种排序方法(冒泡排序、插入排序、归并排序、快速排序)

前面课时中,我们学习了分治法的思想,以及二分查找的实现方法。我们讲到,二分查找要求原数组必须有序。其实,由无序到有序,这是算法领域最常见的一类问题,即排序问题。本课时,我们就来学习 4 种常见的排序算法,包括冒泡排序、插入排序、归并排序以及快速排序。此外,我们还会对这 4 种排序算法的优劣势进行详细地对比分析。什么是排序问题排序,就是让一组无序数据变成有序的过程。 一般默认这里的有序都是从小到大的排列顺序。下面我们先来讲讲,如何判断不同的排序算法的优劣。衡量一个排序算法的优劣,我们主要会从以下 3 个

2020-08-06 23:43:50 4207

原创 数据查找之分治法

前面的文章学习了数据结构、递归思想等,从定性的角度来看,分治法的核心思想就是“分而治之”。利用分而治之的思想,就可以把一个大规模、高难度的问题,分解为若干个小规模、低难度的小问题。随后,开发者将面对多个简单的问题,并很快地找到答案各个击破。在把这些简单问题解决好之后,我们通过把这些小问题的答案合并,就得到了原问题的答案。分治法应用很广泛,很多高效率的算法都是以分治法作为其基础思想,例如排序算法中的快速排序和归并排序。分治法是什么?计算机求解问题所需的计算时间,与其涉及的数据规模强相关。简而言之,问题

2020-08-05 22:13:13 961

原创 算法思维基础之“递归”

不管是数据结构还是算法思维,它们的目标都是降低时间复杂度。数据结构是从数据组织形式的角度达成这个目标,而算法思维则是从数据处理的思路上去达成这个目标。本文介绍算法思维基础之一 ----递归1. 什么是递归在数学与计算机科学中,递归 (Recursion))是指在函数的定义中使用函数自身的方法,直观上来看,就是某个函数自己调用自己,有循环的意味在里面。递归有两层含义:递归问题必须可以分解为若干个规模较小、与原问题形式相同的子问题。并且这些子问题可以用完全相同的解题思路来解决;递归问题的演化过程是

2020-08-04 18:59:07 1307

原创 高效率的查找神器--哈希表

本文从数据结构角度认识哈希表,更多关于Java编程中HashMap的用法见:对HashMap的简单认识1. 什么是哈希表哈希表名字源于 Hash,也可以叫作散列表。哈希表是一种特殊的数据结构,它与数组、链表以及树等数据结构相比,有很明显的区别。2. 哈希表的核心思想在数组、链表以及树等数据结构中,数据的存储位置和数据的具体数值之间不存在任何关系。因此,在面对查找问题时,这些数据结构必须采取逐一比较的方法去实现。而哈希表的设计采用了函数映射的思想,将记录的存储位置与记录的关键字关联起来。这样的设计方

2020-08-03 22:15:35 1136

原创 数据结构基础之树和二叉树:分支关系与层次结构下的增删查操作

本文主要内容是树和二叉树概念,以及如何用树和二叉树实现对数据的增删查的操作。1.树树是由结点和边组成的,不存在环的一种数据结构。树满足递归定义的特性。也就是说,如果一个数据结构是树结构,那么剔除掉根结点后,得到的若干个子结构也是树,通常称作子树。在一棵树中,根据结点之间层次关系的不同,对结点的称呼也有所不同。我们来看下面这棵树,如下图所示:A 结点是 B 结点和 C 结点的上级,则 A 就是 B 和 C 的父结点,B 和 C 是 A 的子结点。B 和 C 同时是 A 的“孩子”,则可以称

2020-08-02 22:27:45 796

原创 关于面试高频问题之--字符串匹配问题

字符串匹配问题是面试的高频问题之一,本文讲字符串和它的相关操作。1. 字符串是什么字符串(string) 是由 n 个字符组成的一个有序整体( n >= 0 )。例如,s = “BEIJING” ,s 代表这个串的串名,BEIJING 是串的值。这里的双引号不是串的值,作用只是为了将串和其他结构区分开。字符串的逻辑结构和线性表很相似,不同之处在于字符串针对的是字符集,也就是字符串中的元素都是字符,线性表则没有这些限制。在实际操作中,我们经常会用到一些特殊的字符串:s = ""; // 表示空

2020-08-01 17:30:57 1064

原创 数组--数据结构中的最基本结构

通过前面几篇文章,我们了解了线性表、栈、队列的基本概念及各自的增删查操作。同时了解了数据结构中时间复杂度和空间复杂度的概念和衡量方式。由于栈和队列是特殊的线性表,本质上它们都可以被看作是一类基本结构。而数组则可以看成是线性表的一种推广,它属于另外一种基本的数据结构。本文我们从数据结构的角度重新认识数组的概念以及如何用数组实现增删查的操作。1. 数组是什么数组是数据结构中的最基本结构,几乎所有的程序设计语言都把数组类型设定为固定的基础变量类型。我们可以把数组理解为一种容器,它可以用来存放若干个相同类型

2020-07-31 21:17:27 2584

原创 Python编程格式规范

无论是工作还是学习,养成良好的写代码习惯,有标准的代码书写习惯是不但可以给自己加分,更重要的是使自己思路更加清晰,方便回忆自己写的代码,快速查阅、提高效率等,也体现了自己做事认证、踏实、不浮躁的一面。本文就是介绍Python语言常见的基本的书写规范。本文主要从编码、缩进/空格/空行、命名、注释等几个方面来说书写格式需要注意的地方。1.编码如果没有特殊的编码要求,建议在文件头部加一行# -*- encoding: utf-8 -*-标识,声明文件的编码方式,当然,程序文件的编码要和声明的编码保持一致,使

2020-07-30 13:35:39 6840

原创 队列--先进先出的线性表

前面的文章介绍了线性表,后进先出的线性表–栈。本文介绍另一种特殊的链表–队列以及队列的增删查。1.队列的定义与栈相似,队列也是一种特殊的线性表,与线性表的不同之处也是体现在对数据的增和删的操作上。队列的特点是先进先出:先进,表示队列的数据新增操作只能在末端进行,不允许在队列的中间某个结点后新增数据;先出,队列的数据删除操作只能在始端进行,不允许在队列的中间某个结点后删除数据。也就是说队列的增和删的操作只能分别在这个队列的队尾和队头进行。与线性表、栈一样,队列也存在这两种存储方式,即顺序队列和

2020-07-29 20:37:47 6953

原创 线性表基本操作

数据在代码中被处理和操作的最小单位动作是增、删、查。他们是深入学习数据结构的根基,通过“增删查”操作,我们可以选择更合适的数据结构来解决实际工作中遇到的问题。例如几个客户端分别分别向服务端发送请求,服务端要采取先到先得的处理方式,应该如何设计数据结构呢?本文介绍数据结构之一,线性表。1.什么是线性表数据结构是数据的组织方式。那么线性表就是数据的组织方式之一。线性表是n个数据元素的有限列表,最常用的是链式表达,通常也叫作线性链表或链表。在链表中存储的数据元素叫做结点,一个结点存储的就是一条数据记录。每个

2020-07-28 12:55:25 2496

原创 栈--后进先出的线性表

1、栈是什么首先线性表是使用非常广泛的一类数据结构,它对数据的顺序非常敏感,而且它对数据的增删操作非常灵活。栈是一种特殊的线性表。栈与线性表的不同,体现在增和删的操作。具体而言,栈的数据结点必须后进先出。宏观上来看,与数组或链表相比,栈的操作更为受限,那为什么我们要用这种受限的栈呢?其实,单纯从功能上讲,数组或者链表可以替代栈。然而问题是,数组或者链表的操作过于灵活,这意味着,它们过多暴露了可操作的接口。这些没有意义的接口过多,当数据量很大的时候就会出现一些隐藏的风险。一旦发生代码 bug 或者受到攻

2020-06-11 20:49:23 3163 1

原创 时间复杂度和空间复杂度

1.复杂度是什么?首先需要知道怎么衡量复杂度。而在实际衡量时,我们通常会围绕以下2 个维度进行:时间复杂度和空间复杂度。2.如何去计算复杂度?复杂度是一个关于输入数据量 n 的函数。假设你的代码复杂度是 f(n),那么就用个大写字母 O 和括号,把 f(n) 括起来就可以了,即 O(f(n))。例如,O(n) 表示的是,复杂度与计算实例的个数 n 线性相关;O(logn) 表示的是,复杂度与计算实例的个数 n 对数相关。3.复杂度计算的三个原则O(n) = O(2n) O(n²)+O(n) =

2020-05-26 14:55:08 286

转载 Anaconda常用命令

首先说一点:Windows下 Anaconda Prompt 这个东西就是用来管理Anaconda的,使用的是conda这样的一种命令在Linux中,可以直接在终端中输入conda 命令可以使用conda命令创建新的python环境(python版本,包),新的环境与原来的环境不相关。这样,方便不同的应用中使用不同的python版本。创建新环境的步骤如下:1、首先在所在系统中安装Anaconda。可以打开命令行输入conda -V检验是否安装以及当前conda的版本。2、conda常用的命令。1

2020-05-23 10:24:22 1263

转载 Pycharm 快捷键

常用快捷键快捷键 功能 Ctrl + Q 快速查看文档 Ctrl + F1 显示错误描述或警告信息 Ctrl + / 行注释(可选中多行) Ctrl + Alt + L 代码格式化 Ctrl + Alt + O 自动导入 Ctrl + Alt + I 自动缩进 Tab / Shift + Tab 缩进、不缩进当前行(可选中多行) Ctrl+C/Ctrl+Insert 复制当前行或选定的代码块到剪贴板 Ctrl +

2020-05-15 11:35:18 212

转载 linux常用命令

文章目录1、cd命令2、ls命令3、grep命令4、find命令5、cp命令6、mv命令7、rm命令8、ps命令9、kill命令10、killall命令11、file命令12、tar命令13、cat命令14、chgrp命令15、chown命令16、chmod命令17、vim命令18、gcc命令19、time命令玩过Linux的人都会知道,Linux中的命令的确是非常多,但是玩过Linux的人也从...

2019-10-07 11:18:27 216

原创 Linux/centos下安装Anaconda

一、演示工具MobaXterm二、下载在清华大学开源软件镜像站下载anconda 的 linux版,下载地址:anconda下载三、安装1、输入安装命令:$ sh Anaconda3-2019.03-Linux-x86_64.sh根据提示陆续安装:输入"yes"不到半分钟安装完毕:2、添加环境变量# 将anaconda的bin目录加入PATH$ echo 'expo...

2019-10-06 22:49:20 992 5

原创 JAVA写指定编码的文件

代码:public static void main(String[] args) throws IOException{ PrintWriter output = new PrintWriter(new OutputStreamWriter(new FileOutputStream("Test.txt"), "utf-8")); output.println("...

2019-04-06 20:10:56 855

原创 词信息处理基础(概率论、信息论基础)

文章目录一、概率论基础1.转移概率2. 条件概率二、信息论基础1.信息熵2. 联合熵3.条件熵4.互信息5. 交叉熵三、n元语法模型四、语法模型的性能评价一、概率论基础语言统计中常常会用到概率论知识,常用到的是概率、转移概率、条件概率。概率的概念这里不再描述。1.转移概率转移概率是指从一个状态到另一个状态的概率,实际上是一种特殊的条件概率,即规定了邻接顺序的条件概率。举例说明:从“中国...

2019-04-02 13:37:11 849

原创 初入中文信息处理

最近往中文信息处理的方向进行研究,查阅资料,翻看书籍,做了一下总结。一、什么是图灵测试?一个封闭的小屋,屋外一个人,屋内依次进入一个人和一台计算机,屋外的人并不知道屋内是人还是计算机,屋外的人向屋内的人或计算机提问,根据里面的回答判断屋内是人还是计算机。上世纪50年代,图灵在具有跨时代意义的论文《计算机器与智能》上提出“机器能思考吗”的问题,并为此设下了“图灵测试”。自然语言处理“自...

2019-04-01 22:20:51 464

原创 用Java统计文章中有多少个不同的汉字以及每个汉字出现的次数

1、思路小编想输入一篇文章,输出字符和该字符在文章中出现的次数,那么就联想到了数据库中的数据表,有键值,还有键值对应的值,如下:keyvaluekey1value1key2value2……那么:字符出现次数字符1XX次字符2XX次于是,在java语言中联想到了HashMap类,恰好可实现,而且有速度快的优势。有关...

2019-01-30 10:57:53 3187

原创 Java文章的汉字个数、标点符号个数、总的字符个数

1.函数介绍要实现文章的汉字个数、标点符号个数、总的字符个数的统计,首先研究如何判断某个字符是不是汉字,小编研究了GBK的编码表,发现:GBK中文部分采用双字节编码,总体范围:8140-FEFE,分为首码和尾码,首码范围:81-FE,尾码范围:40-FE。进一步观察发现汉字的范围是(首码81-A0,尾码40-FE)、(首码AA-AF,尾码40-A0)、(首码B0-F7,尾码40-FE)、(首...

2019-01-29 17:24:18 1839

原创 对HashMap的简单认识

1、简单介绍首先介绍map,map是用于存储键值对(<key,value>)的集合类,也可以说是一组键值对的映射。这有点像数据库里的关系表,key是主键,value是主键的值,只是这里只有一个值。在java中map是一个接口,HashMap基于哈希表来实现Map接口2、数据结构我理解的HashMap的样子是这样的:keyvaluekey1value1...

2019-01-26 20:06:06 378

转载 Java 泛型方法、泛类的使用方法

文章目录1. 泛型方法2. 带限制类型的泛型方法3 .泛类4 .通配符1. 泛型方法泛型方法拥有以下几点特征:由 作为参数声明部分,此部分要放在参数返回值之前,表明这是一个泛型方法泛型方法可以接受不同类型的参数,根据泛型方法的参数类型,编译器适当处理每一个方法调用以下就为一个简单的泛型方法演示:public class GenericMethodTest { /** ...

2019-01-19 22:12:33 3356 1

原创 用JAVA将繁体中文转化为简体中文

一、简述程序shift完成了繁体字到简体字的转换,该程序可以套用其他字典或其他标准,不做限制。其中dictionary.txt是字典文件,下载:dictionary.txttra.txt是繁体字文件,选文为《西游记》第一回,下载:https://pan.baidu.com/s/1LfcD_voJ2cf5TOjFe8uhJQ提取码:86kc二、代码JAVA代码及注释如下:/*功能:繁...

2019-01-11 14:56:53 5057 3

原创 Java进行一万次求和循环,并输出循环过程,并做了速度优化

1. 问题本文接我的上一篇文章:Java输出进行十亿次循环的耗时(2)在上一篇文章中发现的问题是:当在特别大的循环语句(指循环次数特别大)中出现System.out.print()语句时,程序执行的速度十分慢,就上一个例子,就需要花费17.6小时,本文优化了类似的问题。2. 解决(举例)本文通过对比的方式说明:首先展示一万次求和并且打出印过程的耗时(为方便描述,这里我把它称为未优化)...

2018-11-20 21:03:37 5538 2

原创 Java输出进行十亿次循环的耗时(2)

文章目录1. 环境2. 实验内容3. 实验过程4. 实验小结1. 环境windows 10 64位操作系统RAM:8.00GBjdk1.8.0_602. 实验内容输出进行十亿次空循环耗时;输出进行十亿求和循环的耗时,其中sum =sum+i,(不打印过程);输出进行十亿求和循环的耗时,其中sum +=i,不打印过程;输出进行十亿求和循环的耗时,其中sum +=i,并打印过程(循...

2018-11-20 18:27:01 3088

原创 java 输出13060个繁体字集的Unicode码

BIG5是目前中国台湾和中国香港地区普遍使用的一种繁体汉字的编码标准,包括440个符号,一级汉字5401个,二级汉字7652个,共计13060个汉字,所谓一级汉字与二级汉字对应于常用汉字和不常用汉字。关于编码问题可参考我的另一篇文章:我所了解的GB2312、Unicode、GBK、UFT-8、BIG5等编码。本文主要通过 java 对BIG5编码中的13060个繁体汉字转换成对应的Unicod...

2018-11-18 21:05:31 1941

原创 我所了解的GB2312、Unicode、GBK、UTF-8、BIG5等编码

小编一直对文字编码感到模糊,在学习、编程等过程中也经常会遇到与之相关的问题,无奈只能问百度。于是,为解决这一问题,小编花了一些时日了解和学习这些编码,整理出了这些编码的“性格特点”,“兴趣爱好”等等(文章中可能不全面,接受建议)。有关文章参见:趣谈unicode,ansi,utf-8,unicode big endian这些编码有什么区别。在这之前,我得先提一下ASCII码(American ...

2018-11-18 11:29:06 9434

繁体对应简体字字典

.txt文件 文件格式: 文件内容示例如下: 等

2019-01-11

空空如也

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

TA关注的人

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