自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 资源 (2)
  • 收藏
  • 关注

原创 论文笔记:RCLane: Relay Chain Prediction for Lane Detection

该篇论文的核心创新点在于head。论文根据车道线既需要局部信息,也需要全局信息才能很好拟合的特性,设计了相应的算法head。并且论文实验证明该方法在各大公开数据集上均取得了sota。作者称这种方法为延迟链车道线检测方法(RCLane)。该方法通过记录每个点到前后两个点的距离,从而把握车道线的局部信息;再通过监督车道线的两端的端点,整体把握车道线的长度。

2023-01-08 13:49:39 904

原创 有关git commit --amend的用法及若干个问题

瑷~这就是我遇到的严重失误,我进行了这些操作之后,到远端,我发现我提交了一大批文件上去了,根本不是我想要的仅修改本次commit中提交的文件,这是咋回事儿呢?好,有的同学可能会问了,我只看到修改说明信息的地方,你为啥不告诉我,我怎么修改此次的提交的文件呢?想要更改说明信息就更改,然后直接:wq就可以保存并退出了,这个时候你就能看到提交的反馈,然后直接push,到远端查看,会发现一个干净的commit。的用法,但是我还是决定写了,因为我在网上没找到我想要的答案,然后盲目之下,我还产生了严重失误!...

2022-08-02 17:33:41 7158 6

原创 Jupyter notebook选择不同的Anaconda环境作为内核运行

Jupyter notebook选择不同的Anaconda环境作为内核运行前言下载Jupyter notebook配置选择内核的插件功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入前言我使用的是Ubuntu系统,但是此操作跟系统

2021-09-19 15:24:22 1167

原创 本地计算机通过内网穿透提供远程连接jupyter

本地计算机通过内网穿透提供远程连接jupyterjupyter_notebook_configjupyter_notebook_config生成jupyter_notebook_config配置配置路由器实现内网穿透三级目录jupyter_notebook_configjupyter_notebook_config生成在对jupyter进行相关配置的时候,需要先生成jupyter的配置文件。打开acanda的窗口,输入:jupyter notebook --generate-config第一次

2021-03-31 11:54:45 638

原创 深度学习系列(二)优化器 (Optimization)

机器学习系列(二)优化器 (Optimization)梯度下降随机梯度下降批量梯度下降法梯度下降在上一节中,我们已经提到了,我们最终估计一个模型他的拟合程度是通过成本函数计算结果来判断的。因此我们很容易知道,当成本函数达到最小值时,我们的模型就达到了最优。因此,我们更新参数的目标应该是朝着减少成本函数值的方向前进。这里我们可以用到一个数学上的概念去求成本函数的最小值。通过梯度来求解。当我们根据成本函数L求得了对参数W的偏导时,便可以根据公式:W := W- α\alphaαdW 对参数W进行更新。

2021-03-21 15:44:15 436

原创 深度学习系列(一)简介、线性回归与成本函数

机器学习系列(一)一、简介1、什么是机器学习2、机器学习的基本过程3、基本名词解释二、线性回归1、什么是回归2、用于回归的数据集3、什么是线性回归4、我们为什么要研究线性回归5、线性回归模型三、成本函数1、什么是成本函数2、成本函数Mean Square Error(MSE)Mean Absolute Error(MAE)MSE VS. MAE其他损失函数一、简介1、什么是机器学习机器学习就是一种算法,这种算法可以从数据中进行学习。这里有两个关键词,算法和数据。算法的简单理解就是进行计算的方法,

2021-03-04 13:04:15 2374 1

原创 leetCode刷题之第31题

题目描述题目分析这道题实际上意思就是说,给定你数组中的几个数字,对这几个数字进行排列组合形成一个数字。给定几个数字,可以排列形成很多个数字,将这些数字按照从小到大顺序排,所谓的下一个排列就是说下一个数组顺序对应的数字是当前数组顺序对应数字顺序排列的下一个位置。当我们明白了题目意思后,我们需要额外举几个例子来发现一定的规律。这个规律就是,我们需要从末尾向前遍历,1、如果遍历到的数字,大于其后面的数字,则继续向前遍历;2、如果遍历到的数字小于其后面的数字,则应当将当前的数字进行置换,这里置换需要注意,应

2020-11-10 12:52:26 223

原创 LeetCode刷题之第129题

题目描述题目分析这道题其实就是在树遍历的基础上进行了一点点运算而已,因此我们选取合适的遍历方式,并且在遍历过程中进行计算就可以了。遍历方法我更倾向于使用前序遍历,因为我的算法思想如下:每遍历到一个节点,将这个节点的值乘以十,加到自己的左右孩子结点上去。这里我使用的数据结构是栈。代码import java.util.Stack;public class sumNumbers129 { public int sumNumbers(TreeNode root) { int

2020-10-29 11:30:09 185

原创 LeetCode刷题之第1024题

题目描述:解题思路:这道题要抓住一个核心点----新片段的有效长度。这里我定义新片段的有效长度为:新片段的终点时间 减去 已经剪辑好的大片段的终点时刻。因为我们需要计算使用的最小片段数,因此,我们要尽量寻找最大的有效长度,并更新start值。这里start值初始值为0,后面每收纳一个片段,就更新为该片段的终点时刻。则不断循环的收纳条件应当是start<T;而收纳该片段的条件为 clips[i][0]<=start。每一次大循环,正常情况下都会收纳一个片段,因此count++;需要注意的是,

2020-10-24 10:47:22 257

原创 LeetCode刷题之第530题

题目描述:题目分析:这道题属于简单题,因为是二叉排序树,所以中序遍历的结果就是一个有序序列,并且这个有序序列中前后元素的最小差就是我们要求的结果。因此很容易想到用递归进行中序遍历,并存储遍历产生的有序列表。但是,这道题这次我想用递归的本质----栈来进行遍历(实际上是一开始没想到怎么在递归中计算最小差)。因此,写这个博客的意义或许就是介绍一下用栈的形式遍历二叉树吧。代码:import java.util.ArrayList;import java.util.Stack;public cl

2020-10-17 08:43:25 107

原创 LeetCode刷题之第416题

题目描述题目分析一、首先我们很容易判断出该题种必为false的情况,情况如下:1⃣️ 当数组长度小于2时;2⃣️ 当数组所有元素值之和为奇数时;3⃣️ 当数组中最大的元素值大于数组所有元素之和的一半时;二、排除完这些错误情况后,我们需要进行这道题的真正的解题分析。这道题其实很明显的需要使用动态规划来解决,既然想到动态规划,那么我们必须要明确最关键的一点就是状态转移。真正研究状态转移之前,我们需要明确的设定一个载体。这里我们设一个布尔型二维数组dp[len][target+1](一般来说稍微复杂

2020-10-11 10:50:02 294

原创 LeetCode刷题之第701题

题目描述题目分析这题其实就是一个很简单的二叉排序树插入问题。首先我们需要明白一棵二叉排序树的插入过程是怎样的,对于一棵二叉排序树,我们插入一个结点时,首先是与当前树的根结点大小进行比较,如果比根节点的值大,则插入右子树部分然后对右子树进行类似操作;小则插入左子树部分,然后对左子树进行同样的操作。当我们知道此手动模拟的过程后,我们不难发现这明显是一种重复比较的过程。因此可以考虑使用递归解决,仅需要判断好什么时候递归(往左还是往右递归),什么时候插入(插入左结点还是插入右结点)即可。代码public

2020-09-30 18:30:37 149

原创 LeetCode刷题之第746题

题目描述题目分析这道题是典型的动态规划。说到动态规划我们首先就要想到的就是找转移方程。设函数f[i]代表的是i为终点所要付出的最低代价。则当第一个台阶和第二个台阶即为终点时所付出的代价均为0(题目中表示每次可以跨越一到两个台阶)。即f[0]=0,f[1]=0。当i大于1时,那么此时到达终点所需要付出的代价(即状态转移公式)为:f[i] = min( f[i-1]+cost[i-1] , f[i-2]+cost[i-2])。写出此状态转移公式以及初始化情况,那么代码自然就不是问题了,下面是代码展示

2020-07-11 16:22:14 236

原创 LeetCode刷题之第74题

题目描述题目分析这道题从题意可以很轻松就能看出,它是一个严格的排序数组,每一行是顺序的,每一列也是顺序的,知道这一点做这道题就很简单了。我采用的方法是:① 把每一行的第一个数字赋值到一个一维数组上,方便判断我们的目标数字在哪一行上;② 确定好行数后,再将该行的一行数字赋值到另一个一维数组上,在该一维数组上调用Java的进行二分查找的方法,用来判断是否有目标数。在这两个步骤中都有需要注意的点,步骤一中需要注意如何确定好行的位置,步骤二中需要注意调用库的二分查找方法,当没有查找成功时,该方法返回的是什么

2020-07-08 09:31:47 720

原创 LeetCode刷题之第86题

题目描述:题目分析:本题最重要的还是弄清楚链的特征,保证不能断链。这题我相当于使用了两个链来完成,其实可以在原链的基础上完成,因为一开始没想到设置虚拟头结点,所以对于第一个数就小于x的情况有点难办。后面使用两个链解决的过程中,想到了虚拟头结点,但是双链也就浪费一点空间,时间复杂度不变,所以这里不再重新写前面的实现方式了。代码实现:package LeeCode;public class partition86 { public static void main(String[] arg

2020-06-08 17:20:54 215

原创 LeetCode刷题之第61题

题目描述:题目分析:这道题我一开始竟然使用的是递归去解决(捂脸),确实太丢人了,最后提交的时间和空间的耗费排名可想而知。而后看到了评论区有说所谓的右移,其实就是根据给的数k重新选择第(节点数-k)个结点作为头结点,然后尾结点连接上原来的头结点即可,这句话简直就是一语中的。知道了这种思想,我就去实现它去。结果出来后,时间上果然要比我的原先的代码优秀不少。代码:public class Ro...

2020-05-02 15:26:32 193

原创 LeetCode刷题之第55题

题目描述:题目分析:这道题我觉得最关键的是要知道在当前位置所能达到最远的距离是多少。比如第i个下标处所能达到的最远距离是i+nums[i],那么如果j<i+nums[i],那么比可以从i到达j处。因此我们只需要时刻维护好这个最远距离,当最远距离大于等于最后一个元素的下标时,我们就说肯定能够到达。但是需要注意的是,尽管最远距离应该保持在max(max,i+nums[i]),但是我们...

2020-04-30 16:13:28 156

原创 LeetCode刷题之第54题

题目描述:题目分析:这道题目最关键的应当是掌握好边界问题,我们可以把一圈螺旋作为一次循环,设置一个计数变量,用来记录当前循环到的圈数并用来计算下一圈的开始位置。需要注意的是当二维数组并不是一个正方形时,可能会产生错误,我对于这个问题的解法是每次跑完一圈中的一个边,我都去判断一下是否已经跑完(跑完的标准很简单,就是添加到list集合的数据等于数组中的数据),跑完了则直接退出。这里面对于“[]”...

2020-04-29 15:36:37 201

原创 LeetCode刷题之第24题

题目描述:题目分析:这道题目考察的就是链式节点的置换,但是需要注意三点:1、注意输入的链表为空时,进行判断;2、处理链表最末尾时,需要注意处理好只剩一个节点或无节点的情况;3、注意另外申请一个节点,防止生成的链表断链。代码:public class SwapPairs { public static void main(String[] args) { ListN...

2020-04-28 15:54:45 157

原创 LeetCode刷题之第33题

题目描述:题目分析:这道题目中要求的时间复杂度,反而是一种提示,看到这个时间复杂度自然会想到使用二分查找。唯一的问题是这个数组有别于一般的有序数组,那么该如何合理使用二分查找呢?我这里使用的方式是根据特点,将一个数组分成前后两个分数组,然后根据这两个分数组分别进行二分查找即可。代码:public class Search { public static void main(Str...

2020-04-27 15:57:59 172

原创 LeetCode刷题之第23题

前言:这道题也就是LeetCode每日一题活动的4月26日的那一题题目描述:题目分析:这道题最核心的应该是要想到两条有序链合并的情况,只要了解两条有序链合并的情况,这道题就很好解决了。代码:public class MergeKLists { public static void main(String[] args) { ListNode[] lists =...

2020-04-26 16:02:45 181

原创 LeetCode刷题之第3题

题目描述:题目分析:刚看到这道题我就觉得这道题可能最占时间的就是查找,刚好Java中有一种数据集合叫做List,该数据类型可以直接查找数据中是否含有某元素。故而我选择了这个数据类型来解题。这里可以采用双指针,用j指向子串的第一个字符,用i指向遍历到的字符。当list集合中包括了当前遍历到的字符时,我们将j指向重复字符的后一个位置,每一次循环都更新一下最大长度len。代码:import ...

2020-04-25 15:10:12 238

原创 LeetCode刷题之第2题

题目描述:题目分析:这题我刚拿到手就想着要还原成数字,然后进行相加,其实题目已经有提示了,每个节点都是个位数,最好的方法其实是使用节点相加进位,但是既然选择了一条路,我就一条路走到黑了,总的来说用数字相加的方式简单,但是从他的测试用例我知道了,有些用例的数实在是大,数据类型改了又改,实在不行,上大数了,总算通过了。代码:import java.math.BigInteger;publ...

2020-04-24 17:10:26 216 2

原创 LeetCode刷题之第160题

题目描述:题目分析:这道题从表面上看我们应该从头到尾进行,但是仔细分析题目不难发现,两条链相交节点之前的节点数并不相同,因此无法进行遍历比较。这是后我们不难想到可以从尾部出发,但这是一条单链表,我们该如何从尾部向前进行遍历呢???不难想到一个数据结构,那就是栈,它具有先进后出的性质,我们可以遍历单链表,然后压栈,这样我们就拥有了两个倒序的链表栈顺序了,再掐准比较两个链表相交节点的情况,可以很...

2020-04-22 21:31:17 174

原创 LeetCode刷题之第125题

题目描述:题目分析:这道题最初看到的难度就是如何去除字符串中的非字母和数字部分。这里我采用的是通过ASCII码来进行分辨,并将纯净的字符串数值保存起来。还需要注意的是不要忘记对数字的判定,提交时的测试用例“0P” 是零p,不是哦P,刚开始看到这个错误和我运行的不一样时候,我刚准备生气,然后就反应过来了。代码:public class Palindrome2 { public s...

2020-04-20 20:23:27 151

原创 LeetCode刷题之第122题

题目描述:题目分析:这题乍一看似乎有点复杂,但是仔细分析就不难发现,其实判断我当前的操作到底是应该买入还是卖出,只需要跟明天比较即可,同时需要一个布尔值,用来判断当前是否持有股票。代码:public class MaxProfit2 { public static void main(String[] args) { int[] prices = {7,6,4,3...

2020-04-19 22:37:27 185

原创 LeetCode刷题之第111题与第118题

第111题题目描述:题目分析:这题一定要注意题目所说的最小深度,其实是根节点与其最近的叶子结点之间的距离,故而要注意叶子结点这个关键条件。代码:public class MinDepth { public static void main(String[] args) { TreeNode root = new TreeNode(1); roo...

2020-04-17 20:39:42 110

原创 LeetCode刷题之第110题

题目描述:题目分析:这里平衡的评判标准就是某一棵树的左右子树深度之差是否满足不超过一,所以接下来的任务就简单了,任务一:计算某子树的深度;任务二:遍历当前树的所有节点;对于任务一,只需要明白递归终点是节点为空以及每遍历一层深度加一即可;对于任务二可以使用任意一种(本文使用的是先序遍历)遍历方法,递归遍历即可。代码:public class IsBalanced { publ...

2020-04-16 17:39:04 163

原创 LeetCode刷题之第100题

打卡,简单题之100题/** * 给定两个二叉树,编写一个函数来检验它们是否相同。 * 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 */ class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } }...

2020-04-14 22:05:26 187

原创 LeetCode刷题之83题与88题

大家好,从今天起 我就要准备正式刷题了,先从简单题刷起,没错,83和88题都是简单题,因此没什么思路或总结好说,只有第88题需要注意一下不可以直接用一个数组给另一个数组赋值,否则地址会变,结果自然就是错误的。第83题:/** * 83、删除排序链表中的重复元素 * 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 * * 示例 1: * 输入: 1->1-&gt...

2020-04-13 22:36:01 311

原创 TensorFlow实例之识别图片中的手写数字

一、MNIST数据集MNIST数据集来自美国国家标准与技术研究所,其中有训练数据集以及测试数据集,具有大量的手写数字图片数据。该数据集可以直接网上下载,不过在TensorFlow中提供了一个库,可以直接用来下载和安装MNIST。二、测试并查看数据集数据通过TensorFlow,我们可以下载数据集,然后打印相关数据并查看,具体实现代码如下:from tensorflow.examples.t...

2020-04-06 22:13:30 808

原创 TensorFlow之共享变量

一、Variable的用法这里我们把TensorFlow简称为tf。当我们利用tf声明一个变量时,变量中有一个参数是“name”,这是变量的唯一标识,当我们不指定“name”参数值时,系统自动给当前变量设定“name”值为Variable:0。因此当我们用语句:var1 = tf.Variable(1.0,name='firstvar')定义出了一个var1,当我们把这个语句写两遍时,则...

2020-04-03 21:42:25 358

原创 Java中关于继承的几点性质

当一个子类继承了一个父类时,父类中的所有变量和方法宛如写在子类中,子类可以直接使用(无需重写一遍)。Java中继承只能是多层继承,不能使多重继承。即a继承b,b继承c,不能是a继承b和c。当子类中的成员变量与父类中的成员变量重名时,用super关键字类区分,即super.变量名,指父类的变量。另当一个类中的方法变量名与类中的变量名重名时,用this关键字区分,即this.变量...

2020-04-02 15:42:19 174

原创 TensorFlow初体验之模拟深度学习出函数y=2*x

一、准备模拟数据我们准备模拟被学习出来的函数时y=2x,因此,我们需要准备好大约(几乎所有现实模型都不会那么匹配,这就是学习的以为)符合这样的点(x,y)。这里我们可以直接使用生成随机数train_X,同时在随机生成干扰数b。而我们最终希望生成的W就是2(注:深度学习最终的数学模型就是WX+b=Y,W为系数矩阵,X为输入矩阵,b为偏执值,Y为输出),因此我们可以直接令tarin_Y=train_...

2020-03-31 21:28:02 374

原创 tensorflow深度学习初学笔记之Session()对象 Variable变量 placeholder传值

话不多说,想说的话全在代码注释里面了!首先介绍一下Session()import tensorflow as tfimport numpy as np#介绍使用Session()matrix1 = tf.constant([[3,3]])matrix2 = tf.constant([[2],[2]])#matrix multiply 矩阵乘法# numpy中使用矩阵的乘法就是np....

2020-03-25 23:39:05 266

原创 Springboot+UNIAPP实现图片上传和下载

一、 UNIAPP前端文件上传demo只要会阅读UNIAPP文档,我们会发现其实前端这块很好弄,只需要一个按钮,然后按钮下方呈现选择的图片即可。但是我们还有几个细节需要注意。1、chooseimage接口成功后,返回的文件路径是一个数组,因此我们也应当使用一个数组来接收;2、顺利实现图片选择后,可以直接进行上传了,但是这里上传时,‘name’参数才是对应后端接口的文件类,并且上传时无需声明申请...

2020-03-21 20:41:56 5067 7

原创 神经网络概述

一、 所谓神经网络是生物神经网络的仿照我们知道,我们的大脑中存在了数不清的神经元,这些神经元彼此连接,传递生物信号,从此形成了我们人类的一切认知和行为。例如一个刚出生的婴儿,他晚上睡觉会尿床,慢慢的长大过程中他学会了不在尿床,纵然这个学习的过程中结合了很多综合的因素,导致每个人学习的时间长短不一样,但是总体可以概括为:尿床难受总结下次如何不尿床不尿床。这从神经元传递信号的过程来看,就是尿床...

2020-03-20 22:26:03 295

原创 利用OpenCV实现OTSU分割和最大熵分割

利用OpenCV实现OTSU分割和最大熵分割Otsu分割一、 原理我们利用otsu分割算法可以对一张图片的前景和背景进行分割。其思想主要是寻找前景与背景之间的界限灰度值(大于该界限灰度值的部分为前景,小于),前景的平均灰度值减去图像的平均灰度值的平方记为k0,背景的平均灰度值减去图像的平均灰度值的平方记为k1,此时将前景所占的图像百分比m0乘以k0在加上背景所占的百分比m1乘以k1,记相加和...

2020-03-17 15:43:34 771

原创 矢量中值滤波对彩色图像进行去噪

矢量中值滤波对彩色图像进行去噪一、对彩色图像进行中值滤波去噪的特点之前我们其实说过对灰度图像进行中值滤波去噪的操作,但是对彩色图像利用中值滤波去噪的情况又有所不同,其主要原因是灰度图像的rgb分量均相同,而彩色图像的rgb分量绝大多数是互不相同的。这样的一个差别就导致了我们对一组向量的rgb分量进行排序是应当如何选择中值的问题。二、选择中值的三种方式一般来说对彩色图像进行rgb排序选择中值...

2020-03-16 15:45:39 3868

原创 拉普拉斯算子边缘提取与锐化的基本原理与推导过程

一、 什么是图像边缘图像边缘简单理解就是一张照片中,物体的边缘线。例如:一个人站在绿幕中拍一张照片,那么这个人的衣服和背景绿幕在图片中交界的部分我们就称之为边缘。二、 边缘的基本特征要理解边缘的基本特征,我们需要先明白边缘出现的两种情况,以及分别对应的函数图像。1) 阶跃变化原图:函数图像:注:虚线即代表边缘出现的位置,横轴代表位置,纵轴代表灰度值。此函数图像仅代表类似原图边缘的一般...

2020-03-14 16:08:24 7447

Java图形图像处理.rar

实现功能有:图像加运算、两种插值旋转、图像反色、图像放缩、二次曝光、扣去蓝色、 扣去绿色、图像线性增强、利用log函数实现增强、利用幂次函数实现增强、 直方图均衡化、算数均值滤波、中值滤波、拉普拉斯算子边缘提取和锐化、 其他三种算子的边缘提取、矢量中值滤波去燥 操作方式:图像加运算、二次曝光、扣去蓝色:这三个操作都需要先打开一张图片,然后 打开另一张图片,扣去蓝色需要把蓝色图片 作为第二张图片打开; 其他操作均是对单张图片操作,右边呈现结果。

2020-04-12

java图形用户界面模拟后台管理界面(注:附数据库文件)

本资源是利用java的图形用户界面,结合JDBC技术,后台连接数据库,模拟后台管理员的登录以及管理数据的功能

2018-10-23

空空如也

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

TA关注的人

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