自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 python - argparse、configparser的用法

最近在看深度学习模型的源码,第一步参数设置就看不懂,所以写了一点简单的代码片段记录下来,再去看参数设置的代码就没什么问题了,千里之行始于足下,创建模型就从参数设置开始吧。

2024-04-10 17:49:34 519

原创 项目文件有“lib、utils”报错 - pycharm误以为是lib库

【代码】项目文件有“lib、utils”报错 - pycharm误以为是lib库。

2024-04-10 15:12:44 432

原创 FSOD论文阅读 - 基于卷积和注意力机制的小样本目标检测

典型的FSOD使用Fast R-CNN作为基本的检测框架本文亮点:引入混合扩张卷积确保更大的感受野并减少图像信息的损失;提出支持特征动态融合模块,以每个支持特征和查询特征之间的相关性为权重,自适应地融合支持特征一阶段检测算法 - 使用主干网络对图像进行特征提取,直接对特征图像进行分类和回归,例如SSD、YOLO,优点是快,缺点是定位精度低二阶段检测算法 - 先找到可能包含目标的RoI,然后对区域进行分类和回归,例如Fast R-CNN,优点是定位精度高,缺点是慢。

2023-11-15 18:03:31 1082

原创 小样本目标检测(Few-Shot Object Detection)综述

小样本目标检测综述

2023-11-12 00:46:51 1999

原创 conda中的jupyter notebook无法重命名,无法正确打开文件

jupyter的内核问题,卸载pyzmq后重装一下。

2023-11-09 15:20:05 161

原创 conda清华源安装cuda12.1的pytorch

也算是踩坑无数安好了,网上看的方法都试过了,不靠谱,我的不一定靠谱,但是对我有用,记一下,其实之前安装过,现在要重装一个python3.9的版本运行李沐的文件(使用pytorch官方提供的conda command奇慢无比,根本装不下来(科学的情况下也这样)至于-c nvidia是干啥的不知道。配置一下清华源使用清华源装就好了。

2023-11-09 14:42:00 5295 4

原创 yolov7 - 报错问题— assert img0 is not None, ‘Image Not Found ‘ + pathAssertionError: Image Not Found

解决运行yolov7的detect.py报错找不到图片的问题

2023-10-10 19:24:06 1183

原创 Python - 面向对象操作的简单梳理

【代码】Python - 面向对象操作的简单梳理。

2023-02-15 16:41:41 66

原创 Django初始化点击404报错

看来应该是8000的端口被之前的Django程序占用了,等我查查资料把8000这个端口放出来看看是不是因为这个原因…好家伙,每次一点击就404报错。于是乎鄙人换了个端口。

2022-07-28 17:31:25 229

原创 海岛问题[DFS、BFS]

记录一下思路吧,只要碰到1就通过dfs把它附近的1全部抹为0并且count值加1,这里不用dfs使用一个while应该也可以实现。借助队列使用BFS把1改成0,只要碰到1就把那一块相连的1全部改成0,避免在后续碰到的时候发生误判....

2022-07-27 16:38:37 264

原创 最长公共子序列 - Python

dp[i][j] 表示子序列 s1i 和 s2j的最长公共子序列的长度当s1i = s2j 的时候, 找出 s1i-1 和 s2j-1 的最长公共子序列然后​加上s1i即可得到s1i 和 s2j的最长公共子序列. 注:子序列不要求连续,字串才要求连续当s1i != s2j 的时候, 求s1i-1 和 s2j 与 s1i 和 s2j-1 的最长公共子序列,取最大值即可 [没得选就往直前的状态里找一个最大的,dp的特性就是最近的最大一定是已经求出来的所有结果中的最大]因此可得出状态转移方程:​当

2022-06-24 15:31:34 569

原创 从本地上传文件到github的一些使用心得

首先找到要上传的目录:git init 初始化一下(如果不想要了,或者出错了,rm -rf .git)git branch -m master # # 重新取个分枝名git add . # 文件添加到仓库git commit -m ‘first commit’ # # 把文件提交到仓库git remote add origin + github ssh地址 # # 关联远程仓库git push -u origin matser到这一步可能会出现各种奇怪的错误,解决办法:git pul

2022-04-26 18:30:05 266

原创 Python合并PDF

import globfrom PyPDF2 import PdfFileReader, PdfFileWriter# # 最终的PDF保存路径path = 'Final.pdf'# # PdfFileWriter需要实例化一下pdf_writer = PdfFileWriter()for file in glob.glob('./材料的副本/*.pdf'): pdf_reader = PdfFileReader(file) print(pdf_reader.getDocum

2022-04-19 14:05:27 598

原创 关于查找树的总结【BST、AVL、红黑树、B树、B+树】

前言关于各种查找树,可以说是面试、学习绕不开的点,正好最近我也有这种需求,就来进行一波总结与讨论,争取把这些查找树的用法、关联讲清楚当然,这篇文章就类似于一篇使用指南、手册,如果要对哪一块进行一个深入的探究,那么还是需要再单独去查阅相关的文献与资料,如果和您的预期不符,请及时止损(因为本人很多时候都会抱着极大的期待去点开一篇文章,然而内容和标题都不符合在这多叨叨一句,我认为知其然还需要知其所以然,探索一个啥知识点,就好就是用来干嘛的,从哪来的,有啥优点又有啥缺点,有缺点怎么解决,其实这些树之间,都是

2022-03-18 17:39:35 1281

原创 C语言内存分配

前言最近在准备复试,纵观各大经验贴,C语言的内存分配是绕不开的一点,那就我搜集到的资料再总结一下内存类型当C语言编译完成之后,形成的二进制文件里面包括:栈、堆、数据段和代码段一、栈区栈区(Stack):栈区由编译器自动分配和释放,用来存储函数的参数值、函数地址、以及局部变量,并且操作方式类似于数据结构中的栈。所以经常会出现这样一个情况:当递归深度过大时,运行会出现stackoverflow(栈溢出)的错误(栈是向底地址扩展的数据结构,是一块连续的内存区域,它的生长方向与内存的生长方向相

2022-03-18 13:25:05 1406

原创 实现链表反转

题目:解题思路:设置三个指针,把链表的链接方向转换一下# def __init__(self, x):# self.val = x# self.next = None## 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可## # @param head ListNode类 # @return ListNode类#class Solution: def ReverseList(self , head: L

2022-03-17 01:39:08 534

原创 机器学习入门篇【一】:以拉家常的方式讲机器学习

前言因为对机器学习比较感兴趣,最近也可能会用得上,所以想浅浅的谈一谈机器学习,大佬就不用在这浪费时间了,不涉及公式推导。甚至该篇都称不上是什么经验贴,只能说是最近搜寻有些资料有感而发。那么想通过这一篇文章把我最近看的帖子搜寻过的知识点梳理一遍,那么看完这篇文章的唯一目的就是:知道究竟什么是机器学习其中难免掺杂了一些个人理解,如果有误恳请指正!一、机器学习入门首先什么是人工智能(AI:Artificial Intelligence)? - 这个问题我想随便问一个人都会有他心中的答案,不管是

2022-03-17 01:25:10 3575 1

原创 最长公共子序列 - LCS

题目:解题思路:经典dp了,考虑最长的公共子序列,不用连续,连续的话就直接截取一段看看在不在另一个字符串里最开始初始化一个二维列表,用二维的原因是dp[i][j]为前面i个字符和前面j个字符的最长的公共子序列是多少所以判断如果相等,最长的公共子序列应该是dp[i][j] = dp[i-1][j-1] + 1,相等就加1嘛不等的时候 dp[i][j] = max(dp[i-1][j], dp[i][j-1]) 就是把前面的状态看看谁大把谁拉过来,毕竟是要最长的子序列嘛还是dp

2022-03-16 19:12:28 199

原创 对单链表进行排序

题目:解题思路:既然给了空间复杂度就要用起来,创建一个列表对列表排序根据列表创建链表# def __init__(self, x):# self.val = x# self.next = None## 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可## # @param head ListNode类 the head node# @return ListNode类#class Solution: d

2022-03-16 00:44:45 765

原创 牛客网 - 链表相加

问题:解题思路:可以把节点数据提取出来存在列表里然后去算,当然,喜提时间爆表还是老老实实在走节点的过程中就加然后建立链表注意进位的设置,卡我十分钟的点在于q = self.reverse(q)我忘了让指针回来了。。。进位的筛选也很重要最后返回一下链表的反转当然逻辑并不复杂,看一遍代码就知道怎么回事了# def __init__(self, x):# self.val = x# self.next = None## 代码中的类名、方法名、参

2022-03-15 23:22:06 702

原创 两个链表的第一个公共结点

题目:解题思路:两个链表有长有短,先把长短确定下来短的链表不动,长的链表往后面移,移它们的长度差为什么要长的往后移呢? - 两个链表的的公共节点,顶天把短的整个作为公共链了,所以长链往后移由于返回值需要的是一个链表,所以开辟一个新链,找到一个公共部分后链接上就行了# def __init__(self, x):# self.val = x# self.next = None## # @param pHead1 ListNode类 # @

2022-03-15 17:16:46 769

原创 dp -#最长公共子串#

题目:解题思路:两种方法,但是动态规划的过不了,时间复杂度超了,思路是好思路 - 通过状态转移方程确定最大连续的长度是多少。看其他的java经验贴能过,应该是Python的锅吧,解释型的可能确实要慢一点滑动截取子串法:界定左界限lefti是随着循环次数往后移的这个没问题,为什么left不用每次循环之初清零让这个窗口从头来呢?在我的理解中left不更新从头再来是没有必要的,因为如果left没问题的话就继续走了,感觉也是被截断那种连不上就从现在开始再来一遍# 代码中的类名、方法名、参数名已经

2022-03-15 15:54:41 733

原创 删除链表的第倒数n个节点

题目:解题思路:与其说删除链表的倒数第n个节点,不如说删除链表的第k-n个节点的下一个节点,k为链表长度1 2 3 4 5 6 - 倒数第二个节点5,正好就是正数第6-2个节点的下一个走到第k-n个节点,正好k-n.next = k-n.next.next就可以了# def __init__(self, x):# self.val = x# self.next = None## 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的

2022-03-15 14:49:51 147

原创 括号匹配 -题解 | #有效括号序列#

题目:解题思路:非常经典的栈的使用案例 - 括号匹配,只不过这道题难度降低了很多判断是左括号就入栈碰到右括号的时候,从栈顶弹出一个元素,看右括号是否与栈顶元素的左括号匹配,不匹配就返回False整个入栈出栈结束以后看栈内是否还有元素,还有元素就说明匹配失败# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可## # @param s string字符串 # @return bool布尔型#class Solution: def isValid(s

2022-03-15 13:13:37 429

原创 题解 | #链表中环的入口结点#

题目:解题思路:一、 记录法:走过的路记录下来,如果再走到,说明就是环的起点。这个思想很好理解,但是这么做对思路提升的帮助不是很大。二、 快慢指针法(双指针法):进入while之后判断,如果链表会走到头,说明链表一定没有环,返回一个None就行了分快慢两个指针,fast每次走2步,slow每次走一步。最重要的公式来了,假设经过了k次循环,那么是不是fast走过了2k步,slow走过了k步。当fast和slow相遇的时候2k = k,换一个形式看!好,由于链表有环,进环就开始绕圈环外结点数m,

2022-03-15 12:43:21 142

原创 题解 | #合并两个有序的数组#

题目:描述给出一个有序的整数数组 A 和有序的整数数组 B ,请将数组 B 合并到数组 A 中,变成一个有序的升序数组数据范围: 0 \le n,m \le 1000≤n,m≤100,|A_i| <=100∣A i∣<=100, |B_i| <= 100∣B i∣<=100注意:1.保证 A 数组有足够的空间存放 B 数组的元素, A 和 B 中初始的元素数目分别为 m 和 n,A的数组空间大小为 m+n2.不要返回合并的数组,将数组 B 的数据合并到 A 里面就好了,且

2022-03-15 11:44:12 277

原创 dp - #连续子数组的最大和#

解题思路:这道题可以考虑使用动态规划来解决,为什么呢?动态规划:最优子结构和重叠子问题。对于这道题来说,这两个性质都是满足的,首先大问题的最优解包含着小问题的最优解,然后子问题是大问题的小版本。开辟一个dp列表用来实现状态转移方程res最开始为列表的第一个元素,如果列表只有一个元素,返回就是了以[1,-2,3,10,-4,7,2,-5]为例:dp[2] = max(array[1], dp[1]+array[1])解读:dp[1] = max(array[0], dp[0]+array[0])

2022-03-14 21:48:31 731 1

原创 题解 | #设计LRU缓存结构#

解题思路:主要考察的是字典和列表的应用吧。。。逻辑比较简单,复杂的点在于通过列表中元素的位置控制字典中键值对的位置del dic[temp.pop(0)] - 解决字典删除第一个键值对的问题temp.remove(key)temp.append(key)return dic[key]关键就在于用列表去控制这个字典的元素的删除插入顺序# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可## lru design# @param operator

2022-03-14 11:31:52 394

原创 #数组中只出现一次的两个数字#

解题思路:还是hash方法,Python的字典能够很好的解决这件事情用键值对来记录元素以及其出现的次数# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可## # @param array int整型一维数组 # @return int整型一维数组#class Solution: def FindNumsAppearOnce(self , array: List[int]) -> List[int]: # write code he

2022-03-14 01:07:54 1251

原创 判断是否是二叉搜索树

解题思路:对于二叉搜索树来说,应该每个结点的值大于他的左子树的值,小于他的右子树的值兵分两路走,然后在走的过程中不断的判断,这棵树满不满足二叉搜索树return 递归函数:会一直往下面找,直到产生想要的那个结果# def __init__(self, x):# self.val = x# self.left = None# self.right = None## 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值

2022-03-13 23:05:50 552

原创 二叉树的后序遍历

解题思路:先序:根左右中序:左根右后续:左右根根往列表里面加值,左右调用递归函数就行了# def __init__(self, x):# self.val = x# self.left = None# self.right = None## 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可## # @param root TreeNode类 # @return int整型一维数组#lst =

2022-03-13 13:37:16 586

原创 判断是否是平衡二叉树

解题思路:感觉这道题要对递归的运行原理很熟悉才能看得懂两个递归,从下往上的判断是否符合高度差不超过1left, right会一直进递归,直到叶子结点return 0,解决了我初始值的困惑# def __init__(self, x):# self.val = x# self.left = None# self.right = None## 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可## # @p

2022-03-13 13:29:36 325

原创 寻找峰值【二分法找到数据集中的所有峰值】

解题思路:办法比较笨,但是好处在于可以不放过这个一个死角其实这段代码把所有的峰值都给找出来了,如果用一个for循环,碰到就return可能会省下一些时间一定要把边界条件考虑清楚说到底还是采用分执法,也算是递归的典型应用了,要是题目要求是找出所有峰值,那么这个解法就爽歪歪了# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可## # @param nums int整型一维数组 # @return int整型#lst = []class Solution:

2022-03-13 00:16:07 396

原创 链表的奇偶重排

解题思路:设置两个列表,分别保存链表中的奇数结点和偶数结点直接根据链表中的值创建新节点,直到完成实现链表的奇偶重排# def __init__(self, x):# self.val = x# self.next = None## 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可## # @param head ListNode类 # @return ListNode类#class Solution: de

2022-03-11 17:01:20 292

原创 删除有序链表中重复的元素

解题思路:最开始我想用两个指针来解决这个问题,但是显而易见把事情搞复杂,一个指针就够了猜测:因为Python的自动垃圾回收机制,所以不需要去free删除节点,毕竟如果我们用C的话,删掉的链表结点是需要free的当然,hash、空间换时间,应该都是具备可行性的,去记录元素出现次数就可以了# def __init__(self, x):# self.val = x# self.next = None## 代码中的类名、方法名、参数名已经指定,请勿修改,

2022-03-11 16:02:44 494

原创 #判断一个链表是否为回文结构#

解题思路:该题目最大的好处就在于 - 没有要求空间。那么就happy了,以空间换时间,百试不爽设置一个列表,把链表中所有结点的值保存下来,然后逆切片看等不等# def __init__(self, x):# self.val = x# self.next = None## 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可## # @param head ListNode类 the head# @return bool布

2022-03-11 15:20:03 50

原创 爬楼梯【dp】

解题思路:可以递归解决,但是递归随便深度就超过了用dp做这件事,状态转移方程找好记忆化递归也可以考虑 手动人为的剪枝# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可## # @param number int整型 # @return int整型#class Solution: def jumpFloor(self , number: int) -> int: # write code here if numbe

2022-03-11 15:04:36 71

原创 二分查找【列表中第一个出现的目标元素下标元素】

解题思路:还是二分查找如果有重复的目标元素,只可能在找到的这个mid的左边,因此往左边去找就行了,唯一需要注意的就是不要超过了边界条件# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可## 如果目标值存在返回下标,否则返回 -1# @param nums int整型一维数组 # @param target int整型 # @return int整型#class Solution: def search(self , nums: List[int],

2022-03-11 12:41:32 213

原创 #合并两个排序的链表#

解题思路:设置一个头结点或者是待插入的链表遍历那给出来的两个链表,遍历的过程中比较并且把链表的结点插入到待插入的链表中两条链表长短不一,所以可能会有某一条先结束,因此在两条都进行比较以后需要再判断是否有某一条链表还有结点没加进去# def __init__(self, x):# self.val = x# self.next = None## 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可## # @param pH

2022-03-11 12:06:48 136

原创 #链表中的节点每k个一组翻转#

解题思路:先抄后看,养成习惯初始链表不体面,我们就帮他体面(设置头结点res)看一下链表的总长度是多少 - i用来记录链表三兄弟 - pre 、 q 、 r(前中后三个结点)建议对着for循环里面的内容画一遍图,循环两次观察一下过程心得体会:翻转链表可以考虑头插法来实现给一个错误的代码,错就错在r.next = q,这一句让我半天想不明白,后来发现想要循环更新,不能让r.next = q, r.next = pre.next – 两个元素互换位置没有问题,但是我们要实现头插法,就不能用q

2022-03-10 15:34:16 131

空空如也

空空如也

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

TA关注的人

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