自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【2019_ICCV】Learning to Collocate Neural Modules for Image Captioning

【2019_ICCV】Learning to Collocate Neural Modules for Image Captioning1. 摘要​ 大多数基于编码-解码的模型都是逐个生成单词,整体没有结构结构性。为了使现有的 编码-解码 图像描述模型具有类似人类的推理能力,提出了一个新的模型——学习配置神经模块(CNM),该模型充分利用了模板和编码-解码模型的优势,可以通过结构化模式和端到端训练生成描述。CNM模型能够通过多种模块搭配来模仿语言描述中的句式。函数模块和目标模块的联合推理,增强了描述的

2021-01-22 20:24:34 266

原创 六角填数之全排列

算法步骤(1)为需要填充的所有点规定一个顺序,按照该顺序确定一个满足行和都相等的模型;(2)将所有可以填充的数字进行全排列,也就是这些数字组合的所有可能(这里的全排列通过递归来实现,采用树形分解法);(3)将步骤(2)全排列结果依次带入步骤(1),直到找到满足条件的组合。实例以及代码问题描述:在如图所示的六角形中,每一个圆圈都可以填入一个数字,现需要将整数1-12填入,使得填入后的每条直线的和都相等。问红色星号处填入的数字是多少?实例代码//未填入的数字int data[9]={2,4,5

2020-05-23 16:09:37 4882

原创 最少弹跳数之广度优先搜索

算法步骤(1)从起始点出发,将该点能够达到的每一个点进行入队,同时将他们的时间设置为起始点加1 ;(2)只要队不为空,对每一个出队的点都进行类似起始点的操作;(3)直到出现某一个出队元素的点的坐标大于原始距离。注意:要对已经过的点进行标记,防止重复访问。实例以及代码问题描述:游戏机由 N 个特殊弹簧排成一排,编号为 0 到 N-1。初始有一个小球在编号 0 的弹簧处。若小球在编号为 i 的弹簧处,通过按动弹簧,可以选择把小球向右弹射 jump[i] 的距离,或者向左弹射到任意左侧弹簧的位置。也就

2020-05-23 15:17:04 4689

原创 墨水染色之广度优先搜索(C语言实现)

算法步骤:(1)创建一个队列,将是墨水的点依次进行入队;(2)依次出队,对于每一个出队的点进行周围(上下左右)染色,并将成功染色的点进行入队;(3)不断重复步骤二,并且在入队的同时记录下时间。实例以及代码问题描述:输入一个m*n的矩阵,矩阵中的元素包含0、1、2(其中0表示什么都没有,1表示白纸,2表示墨水),每秒墨水会向四周(上下左右)进行染色,被染色的纸也会对周围的纸进行染色。试问,对于输入的矩阵,多久才能完全染色?实现代码:#define MaxSize 30//点的数据结构typ

2020-05-19 17:02:37 5527

原创 数字三角形之动态规划(C语言实现)

算法步骤:(1)首先构造三个数组,第一个是存储三角形初始值的数组data[][];第二个是存储顶点到该点最大值的res[][]数组;第三个是存储该点上一个点的loc[][]数组。这里要对res[][]数组进行初始化-1;(2)按照三角形的层次结构,从上到下,从左到右依次计算res[][],对于每一个位置(i,j),找到res(i-1,j)和res(i-1,j-1)中较大的那个值,加上data[i][j],便得到了res[i][j];同时,在loc[][]中记录相应的前一个点。(3)在res[][]数组

2020-05-17 16:49:39 6970

原创 简易计算器(C语言实现)

算法核心:一般表达式都采用的中缀表达式,而中缀表达式不仅要依赖运算符优先级,还要处理括号。所以,对于中缀表达式,一般是先将其化作后缀表达式,在后缀表达式中只有操作符和运算符,而且越放在前面的运算符越先执行。算法步骤:1.将算术表达式转换为后缀表达式。先设置两个数组,一个是用于存放后缀表达式的res[]数组,另一个是用于当作栈使用用于存放运算符的Stack[]数组,每取一个字符:(1)当遇到运算符时:a.若该运算符的优先级比目前Stack[]栈顶的运算符高时,直接入栈;b.若运算符的优先级没有St

2020-05-15 16:16:33 16187 9

原创 深度搜索迷宫问题(C语言实现)

算法步骤:使用一个栈来保存符合要求的点,每次根据栈顶的点的k值(1表示上,2表示右,3表示下,4表示左)依次取下一个点,满足条件则不断循环;若某一个点的四面都不行,则进行出栈回溯。当找到这样一条路径,也要进行回溯,这样才能输出所有的路径。实例以及代码//定义结构体typedef struct{ int m; int n; int k;}Dian;Dian g[30];//实现栈的作用int top=-1,k=1;int mg[6][6]={{1,1,1,1,1,1},//通过0和1

2020-05-14 13:18:30 5836

原创 n皇后问题(C语言实现)

算法核心:(1)递归:从第一行开始,不断地递归处理下一行,直到处理到n+1行就停止。(2)回溯:若该行的任意位置均不能满足条件,则进行回退,退到上一行的下一个状态。算法步骤:对于每一行而言:先判断该行是不是第n行,如果是,则说明现在栈数组g[]中保存着一个可行的解法,进行输出。、若不是,则从该行的下一个状态开始(每一行的状态为0,1,2…n-1,初始状态为0),(1) 若该点满足,则存储该点的位置,并进行下一行的递归,同时,在每一个递归的后面要进行出栈(因为输出不止一个解法);(2) 若不

2020-05-13 16:14:43 8313 4

原创 各种背包问题动态规划(C语言实现)

算法核心:首先,需要设置一个二维数组t[][],其中t[i][j]表示利用前i个物品来装进容量为j的背包的所能够获得的最大价值。当只考虑第i件物品时,可将情况分为是否放入第i件物品两种:1.01背包——每个物品仅有一个不放第i件物品:t[i][j]=t[i-1][j]放入第i件物品:t[i][j]=t[i-1][j-weights[i]]+values[i]2.完全背包——每个物品有无数个不放第i件物品:t[i][j]=t[i-1][j]放入第i件物品:t[i][j]=t[i][j-weig

2020-05-13 11:38:40 6407 2

原创 最长公共子序列和最长公共子串(C语言实现)

核心思想:利用动态规划的思想,通过设置一个临时数组t[][],其中t[i][j]表示,以Str1[i]作为末尾和以Str[2]作为末尾的最长公共子序列或者子串的长度。算法步骤:(1)将输入的两个字符串分别存在数组a[]和b[]中,同时设置两个临时数组t1[][]和t2[][],第一个t1[i][j]表示a[]数组前i-1个字符串和b[]数组前j-1个字符串的最大公共子序列;第二个t2[i][j]表示a[]数组前i-1个字符串和b[]数组前j-1个字符串的最大公共子串;(2)循坏遍历两个字符串的所有字

2020-05-12 15:43:01 9625 1

原创 最长递增子序列之动态规划(C语言实现)

算法步骤:(1)设置一个mark[]数组,mark[]数组的个数和原序列data[]的个数相等,mark[i]表示以data[i]作为结尾的最长递增子序列的长度;(2)在确定mark[i]时,在0到i-1中找到这样一个k,使得data[k]<data[i]且mark[k]=MAX{mark[0]…mark[i-1]}。若存在这样的k,则mark[i]=mark[k]+1;否则mark[k]=1;(3)不断重复步骤(2),直到i取到序列最后一个数;(4)在mark[]数组中找到最大值,该最大值便

2020-05-10 23:30:00 4140 2

原创 最大子矩阵(C语言实现)

算法核心:先将二维数组处理为一维数组,再对一维数组进行最大连续子序列求和,这里最大连续子序列求和采用的是递推的方法。算法步骤:(1)将原矩阵初始化,并创建一个临时二维矩阵,该矩阵的第i行表示的是原矩阵前i行的和;(2)采用穷举的方法,计算二维矩阵所有可能的连续行的列的和,使其压缩为一维数组;(3)对步骤(2)中得到的每一个数组进行最大子序列求和,同时,不断更新最大值。实例以及代码问题描述:给定一个矩阵,找到最大的子矩阵。//定义数据,A是原矩阵,t是临时矩阵,用于存储行的和int A[10

2020-05-10 15:40:36 7491

原创 最小生成树之克鲁斯卡尔算法(C语言实现)

Kruskal算法关键:如何判断新选取的一条边加入到已选取的边集合中是否出现回路?可以通过判断该边的两个端点是否属于同一连通分量的方法来解决。Kruskal算法步骤:(1)对每一个边进行初始化,并为该边的顶点构建一个集合,同时记录下该边的权重;(2)根据边的权重进行排序;(3)按边权重由小到大,依次取一条边,若该边的两个端点没有在一个集合,则可以将该边加入已选取的边集合中去;若在,则忽略该边。不断重复选下一条边,直到边数等于顶点数-1。实例以及代码//定义边的数据结构,声明相应的变量typ

2020-05-09 11:40:28 1992 1

原创 判断图是否为树(C语言实现)

核心思想:图是树需要满足两个条件:(1)图中结点均连通,即结点属于同一个集合;(2)结点满足只有一个结点入度为0,其余结点入度为1;算法步骤:(1)一次读入一条边,将读入的边对相应的两个结点分别初始化,若该点之前不存在,则创建一个包含该点的新集合;同时,对于后面的结点,入度要进行加1;(2)比较该边的两个端点是否在同一个集合,若不在则将该边的两个端点所在的两个集合进行合并;(3)重复...

2020-05-08 17:17:12 7057

原创 基础拓扑排序(C语言实现)

算法步骤:(1)根据邻接矩阵统计每个顶点的入度,统计结果存在mark[]中;(2)在mark[]中寻找为0的顶点i,找到后将mark[i]–,并且更新与该点相关的顶点的mark[]数组;(3)重复步骤(2),直到所有点的mark均为-1。实例以及代码//全局变量,图的邻接矩阵以及记录数组markint A[6][6]={{0,1,0,0,0,0}, {0,0...

2020-05-08 11:01:54 561

原创 最短路径(C语言实现)

Dijkstra算法具体步骤:(1)初始时,S集合只包含源点(S={v}),U集合包含剩余的点,源点v到自己的距离为0,到其他顶点的距离均为无穷大(表示不可达),以此更新dist[]数组,除dist[v]=0之外,其余全为无穷大;(2)在dist[]数组中,找到目前在U集合中且使得源点v到其距离最小的顶点k,将该顶点加入U集合,并作为新的源点;(3)根据新源点k,更新该源点到其他顶点的最小距...

2020-05-07 16:45:53 12615 2

原创 我的机器学习之路 第六关

六、正则化1.过拟合问题 为了拟合数据,在假设函数中设置了过多的变量,可以使J(θ)接近于0,但模拟出来的曲线为非凸曲线,不能更好的泛化到新样本中2.解决过拟合的方法:减少变量数正则化3.正则化 当假设函数过拟合时,为了使曲线更光滑,在J(θ)中加上一个正则化项: λ/(2m)*∑θi^2 (约定θi从θ1开始) 这样可以将所有的θ进行缩小(1)正则化线性回...

2018-10-28 21:36:49 223

原创 我的机器学习之路 第五关

五、Logistic回归1.核心:Logistic回归算法 (1)用于监督学习里的分类问题,预测离散型输出,是一种分类算法. (2)分类问题 二分类:输出为0(负类)或者1(正类) 多分类:输出为0,1,2,3等等2.logistic回归的假设函数h(x) 对于分类问题,如果直接用线性回归中的假设函数h(x)=θ^T*X,通过...

2018-10-24 23:30:33 205

原创 我的机器学习之路 第四关

一、初识octave1.基本操作(1)% 表示注释(2)~ 表示反,相当于编程语言中的!(3)&amp;amp;amp;amp;amp;amp;amp;&amp;amp;amp;amp;amp;amp;amp; 表示与 || 表示或(4)加减乘除是 + - * / (5)PS1(&amp;amp;amp;amp;amp;quot;$&amp;amp;amp;amp;amp;quot;) 表示将命令提示符换为$(6)在命令输入完成后,加一个;

2018-10-20 21:36:35 5293 1

原创 我的机器学习之路 第三关

机器学习之路三、多变量线性回归1.定义:用很多特征来拟合数据,更贴近实际应用的线性回归算法,包含很多特征变量x1,x2,x3等等。 其中:m表示样本空间; n表示特征数; x^(i)表示第i组数据; x^(i)j表示第i个训练样本中第j个特征值;2.多变量假设函数...

2018-10-18 23:32:18 140

原创 我的机器学习之路 第二关

机器学习之路二、 单变量线性回归1.什么是单变量线性回归? 在训练集中,有一个自变量x和一个因变量y,通过数据拟合,去找到它们之间的关系(假设函数)。最终实现任给一个输入,都会有一个相对正确的输出。 注意:单变量线性回归属于监督学习下的回归问题。2.代价函数 (1)定义:J(k,b)=(1/2m)*∑(h(x) - y(i))^2 其中,h(x)=kx+b ...

2018-10-14 19:24:21 5285

原创 我的机器学习之路 第一关

机器学习之路一、初始机器学习1.什么是机器学习? 使计算机像人一样,能够通过观察学习获得经验。2.机器学习的分类: 监督学习、无监督学习、强化学习以及推荐系统。3.监督学习(1)定义:给定计算机一定的规则参照,让其对数据进行分析,预测其输出,做出好的决策;(2)分类:回归问题(预测连续值输出)分类问题(预测离散值输出)理解:回归问题和分类问题的区别在于对预测结果类型的不...

2018-10-14 00:30:39 5285

空空如也

空空如也

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

TA关注的人

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