自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 动态规划

动态规划算法最长回文子串算法设计对于这一题,我们可以先思考一下如何利用穷举法去做,其实本题使用穷举法的思路很好想,即通过双重循环穷举所有的子串,然后再对每个子串判断其是否为回文串,如果是回文串则记录下该子串的长度,并找出最大长度。但这样做效率显然是低下的,通过穷举法可以看出,这个问题的状态空间就是所有子串的最大回文串的长度,穷举法实际上是以一种比较暴力的方式对整个状态空间进行了遍历并得到了所有的状态值,因为对于每一个长度为n的子串而言,判断其是否为回文串需要o(n)o(n)o(n)的复杂度,因此我们

2020-08-22 20:02:30 139 1

原创 回文子串

回文子串通过动态规划算法来解,状态空间很好定义:dp(i,j)表示s[i,j]之间的子串是否为回文串,状态转移方程也很容易得出。class Solution {public: int countSubstrings(string s) { int dp[1000][1000]; int sum = 0; for(int i=0;i<s.size();i++){ for(int j=0;j<s.size()

2020-08-19 19:41:00 131

原创 分治算法

分治算法分治算法在程序设计中应用广泛,总体思想是将一个大的问题分解为子问题,再将子问题的解进行治理得到最终解,下面看几个问题。最大子列和本题要求我们求出具有最大和的连续子数组,运用分治法的思路为:将数组分为两个子数组,先求出左边数组的最大子列和再求出右边数组的最大子列和,这就是我们所说的分,接下来就是治,此时如何得到整个数组的最大子列和呢,能仅仅从左右两边数组的最大子列和求出最大值吗,可能不行,因为我们还需要考虑一种情况:即跨越左右边界的连续数组也有可能成为解,因此我们从边界出发向左右两个方向生长求出

2020-08-19 18:04:47 293

原创 有序链表转换二叉搜索树

有序链表转换二叉搜索树本题思路不难,由于链表本身已经有序了,根据二叉搜索树的性质,每次在当前的链表找到中点作为当前树的根节点,再将链表分割并递归构造子树。同时在寻找链表中点的时候采用快慢指针提高速度。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * .

2020-08-19 12:22:36 101

原创 leetcode696

一道简单题,但是刚拿到居然没有想出来,其实是有点不应该的。虽说官方解法不一定能马上想到,但是基于堆栈的方法应该是要想到的,也就是遇到0压入堆栈,遇到1时弹出,然后进行相关的计算。下面的代码还是采用官方解法,形成一个count列表再计算:class Solution: def countBinarySubstrings(self, s: str) -> int: idx,size = 0,len(s) count = [] cnt = 1

2020-08-10 20:24:24 121

原创 leetcode632

采用多路归并算法,需要构造一个小顶堆,注意写法class Solution { typedef pair<int,pair<int,int>> PI; public: vector<int> smallestRange(vector<vector<int>>& nums) { priority_queue<PI,vector<PI>,greater<PI>> H

2020-08-10 08:21:11 77

原创 模型集成

模型集成集成学习集成学习就是说将多个“单学习器”使用某种策略结合起来,使得整体的泛化能力得到提高。因为在机器学习中我们的目标是学习到一个稳定的并且在各个方面都表现较好的模型,但往往我们只能得到一个由某种偏好的模型即在某些方面表现得比较好,因此集成学习通过集合多个弱监督模型来得到一个更好的模型。集成学习方法一般可以分为以下几类:BaggingBoostingStacking在本次任务中我们也可以使用集成学习技术,比如我们训练得到了若干个CNN模型,那么我们可以通过计算平均值的方式将这些模型集

2020-06-02 08:41:29 182

原创 模型训练与验证详解

模型训练与验证在前面我们已经准备好了数据集并完成了模型的搭建,接下来我们就要进行模型的训练与验证。有些同学可能会觉得模型的训练代码编写并不难,我个人也认为如此,但我们并不是把模型训练一下就完事了,后续我们还需要计算模型的各项性能指标,并通过验证集选取最优模型,这里面也还是有些坑的,因此有必要好好说道说道。训练函数我们将一次训练过程封装到一个函数中,先看代码再解释:model = SVHN_Model1()criterion = nn.CrossEntropyLoss()optimizer = t

2020-05-29 20:50:47 5281

原创 模型构建

字符识别模型对于字符识别任务,我们已经在前面提出了三种思路,这里我们主要基于思路一来讲解如何利用pytorch搭建深度学习模型。思路回顾我们的思路是将字符识别转换为定长字符识别模型,经过数据分析可以得到字符为6个的图片仅有一张,因此我们确定定长字符个数为5个,对于不到五个字符的我们将余下的字符填充为10,我们的模型要从数据集中学习到如何从一张图片中识别出5个字符,对于这类视觉问题,我们主要使用卷积神经网络模型。预备知识利用pytorch我们可以很快速地搭建CNN模型,主要利用pytorch实现这些

2020-05-26 20:58:59 1239 1

原创 pytorch数据增强与数据读取

数据增强与数据读取数据增强为什么要进行数据增强深度学习模型的参数很多,模型复杂度很高,如果此时数据集数量不够导致数据集中数据的复杂度没有涵盖所有特征空间,那么模型就会学习到这些数据集的一些独有的特征,这会导致过拟合的问题,因此我们有必要对数据集进行增强操作以减小过拟合的风险。利用pytorch进行数据增强在pytorch的torchvision库中提供了很多的数据增强方法,主要可以分为四类:裁剪翻转和旋转图像变换对transform操作使得数据增强更加灵活具体的函数可以参考pytorc

2020-05-23 21:00:18 2255

原创 街景字符识别baseline

街景字符识别赛题理解与解决方案题目要求:给定一张街景字符图片,能够正确识别出其中的数字字符。根据题目的要求可以分为三种思路:定长字符识别:由于图片中的数字字符最多不会超过6个,因此可以将问题视为一个定长字符问题。我们需要将数据中的label填充为6位,不存在数字的位置填充为X,因此最终的问题就是6个字符的分类问题,一共分为11个类别,若识别为X,则表示该位置没有数字。不定长字符识别问题:利用字符识别模型直接进行不定长字符识别。目标检测问题:利用YOLO、SSD等目标检测算法先检

2020-05-20 14:46:27 558

原创 图像语义分割(一):何为语义分割

语义分割系列(一)何为语义分割我们在基于深度学习的计算机视觉领域所进行的任务大致可以分为三类:图像分类、目标检测以及图像分割。图像分割还能进一步分为语义分割和实例分割,我们这里只讨论语义分割。图像分类The origin could be located at classification, which consistsof making a prediction for a whole input, i.e., predictingwhich is the object in an

2020-05-15 11:30:54 5650 4

原创 并查集

union find并查集是用于管理元素分组情况的数据结构,注意并查集虽然可以进行合并操作但是无法进行分割操作。主要有下面两个操作:查询两个元素是否在同一组合并两个元素所在的组并查集操作并查集使用树作为数据结构(不一定是二叉树)合并从一个组的根向另一个组的根连一条边。这里一定要注意,合并的时候是把两个节点所在的树合并到一起,而不仅仅是将一个节点连到另一个节点上。查询查询两个元素是否在同一组内,只需查找它们是否在同一个树内(从两个节点向上走看是否能走到同一个根)。在具体实现中我们还有如

2020-05-14 22:24:36 127

原创 树形DP

树形dp接触到了两题将树与动态规划相结合的题目,有人将其称之为“树形dp”,不过做完之后感觉确实有所启发,对动态规划的理解又进了一步,因此写一篇blog来总结一下。543 Diameter of Binary Tree题解题目的意思是让我们求树的最大直径,题目中对直径的定义是任意两点之间的最大路径。这一题拿到手,通常我们先用递归的思想去分析。树的根节点连接着左右两棵子树,那我们可以定义dp(root)为以root的根节点的树的最大直径,那对于大问题我们可以去递归地求解dp(root->le

2020-05-10 21:32:08 181

原创 python图像处理之直方图绘制

上一次我们介绍了通过python将图像进行灰度化,这一次我们来介绍如何通过python进行图像直方图的绘制,这一次我们要借助于python中的matplotlib库。预备知识何为直方图图像直方图是对图像像素分布情况的图形表示,比如我们可以统计像素为0的点有多少个,像素为1的点有多少个…然后将统计情况用图形表示出来即为直方图,当然我们也可以根据需要统计区间内的分布情况,比如像素在0到100内的...

2020-03-22 22:46:04 6034 2

原创 python图像处理之图像灰度化

灰度化预备知识在了解图像处理的基本操作之前,我们需要知道关于图像的一些基本知识。我们这里所说的图像处理实质上是数字图像处理,因为计算机只能对数字信号进行处理,因此存储在计算机中的图像都是实际图像经过离散化处理之后得到的。图像是以数组的形式存储在计算机中间的,对于彩色图像而言,存储形式是三个离散的二维数组,每个数组对应一个颜色通道,具体在python中,图像的数据结构为numpy数组。这里需要...

2020-03-08 10:04:42 10417 9

原创 一个三皇后问题

用循环实现了一个简单的三皇后问题,为递归解决N皇后问题打基础#include#includeusing namespace std;int queen[100];//表示第n行放在第几列 int a=0;int first=1;int main(){int i,j,k;int pos=0;for(i=0;iqueen[a]=i;for(j=0;j

2017-08-27 18:38:50 1579

空空如也

空空如也

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

TA关注的人

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