- 博客(136)
- 问答 (1)
- 收藏
- 关注
原创 在克隆项目时出现Failed to connect to github.com port 443:connection timed out
按下win+q输入代理服务器设置,这个在设置里面也能找到。肯定就成功了,以前那些方法治标不治本。
2024-07-02 12:34:50
280
原创 关于训练环境有GPU运用Float16保存的参数与部署环境用CPU只能用Float32运行的问题
我有一个训练好的模型底层的参数比如权重是float16,是在gpu上训练的,然后我现在在另一台电脑上运行,电脑没有GPU因此只能使用float32运行,但是在运行时,因为调用了pytorch的nn.MultiheadAttention(d_model, n_head),在底层计算出现float16与float32的运算导致报错,怎么解决?
2024-05-06 18:11:11
218
原创 yolov5 的行人检测代码一些问题的解决方案
强推这篇文章yolov5 的行人检测代码,在 github 上下载一个案例之后因为没用 GPU 运行一直碰壁,出现了许多 bug,现在整理了下 error 和解决方法,成功调试出了基于 yolov5 的行人检测代码。
2024-04-28 21:53:16
182
原创 面试经典150题——求根节点到叶节点数字之和
对于时间复杂度,两种方法都是O(N),因为两种方法都会访问树中的每一个节点。对于空间复杂度,BFS和DFS之间的差异通常依赖于树的形状。对于大多数情况,DFS的空间复杂度较低,因为它的最坏情况是高度倾斜的树。而BFS在最坏情况下可能需要存储许多节点。需要注意的是,DFS递归的空间复杂度也包括隐式的调用栈。在实际情况中,如果树非常深,DFS可能会因为堆栈溢出而不如BFS稳定。相反,如果树非常宽,则BFS可能会因为队列变得非常大而消耗更多内存。我的代码中BFS方法修改了树的结构。
2024-04-25 10:19:19
826
原创 面试经典150题——路径总和
注意题目的关键点:判断该树中是否存在的路径,起点是root,终点是叶子节点。那么我们就可以从根节点按照层序遍历的方式,从根节点从根到 叶子不断对路径进行加和(注意:层序遍历需要使用一个队列存储每一层的节点),就可以按照如下步骤进行:最后发现当前层有叶子节点的值是targetSum就说明返回true,否则返回false。
2024-04-24 11:07:29
423
原创 人工智能底层自行实现篇3——逻辑回归(下)
在这个项目中,我们手动实现了逻辑回归模型的训练过程。我们首先定义了 Sigmoid 函数和对数损失函数,然后使用梯度下降法最小化损失函数。我们将这个模型应用于一个模拟数据集,其中包含患者的生理指标和是否患有糖尿病的标签。最终,我们评估了模型的准确性,并展示了预测结果。通过最终的结果,我们可以看到我们的模型在测试集上的准确率为 0.885,说明我们的逻辑回归模型在这个数据集上表现还是不错的。
2024-04-24 11:05:15
1099
原创 关于上传自己本地项目到GitHub的相关命令
如果你的GitHub是main分支想上传到main分支,本地用gitbash打开是master,记得在初始化本地git之前先对git bash的默认分支名进行更改为main,这样以后都是main分支。
2024-04-23 15:11:53
337
原创 人工智能底层自行实现篇3——逻辑回归(上)
似然函数(Likelihood function)是统计学中的一个重要概念,用于**量化一个统计模型在给定一些样本数据下的参数估计的可能性。**简单地说,
2024-04-21 23:12:08
1480
原创 mysql和Nosql到底有什么区别,分别应用与什么场景?
MySQL 和 NoSQL 是两种不同类型的数据库技术,它们各有其特点和适用场景。了解它们之间的区别和应用场景可以帮助选择合适的技术来支持特定的应用需求。
2024-04-20 16:55:35
1099
1
原创 面试经典150题——填充每个节点的下一个右侧节点指针 II
要解决填充每个节点的下一个右侧节点指针问题,我们可以使用层序遍历(也称)的方法来实现。这种方法能够有效地处理每层节点,并按顺序连接它们的右侧指针。
2024-04-20 15:55:13
339
原创 面试经典150题——从前序与中序遍历序列构造二叉树
这样,节点位置的查找时间复杂度可以降低到O(1)。:在前序遍历中,紧接根节点之后的一段连续序列对应于左子树的前序遍历,而在中序遍历中,根节点位置之前的一段序列对应于左子树的中序遍历。最坏情况下,二叉树是高度不平衡的,例如全部倾斜成一条直线,这时递归的深度为 (n),因此调用栈的最大深度也为 (O(n))。前序遍历(Preorder Traversal)的特点是根节点首先出现,接着是左子树的所有节点,最后是右子树的所有节点。:由于哈希映射的构建和递归构建树各占 (O(n)),总时间复杂度是 (O(n))。
2024-04-18 10:41:03
521
原创 面试经典150题——对称二叉树
为了解决问题“检查一个二叉树是否是对称的”,我们需要判断树的左子树和右子树是否是彼此的镜像。这意味着树的左子树的左侧应该与右子树的右侧相同,左子树的右侧应该与右子树的左侧相同。这是因为递归本质上是函数自调用,使用的是计算机的调用栈来保存状态;而迭代算法使用的是循环结构,在循环中显式使用数据结构(如栈或队列)来保存状态和管理控制流。这种方法是将递归的深度优先搜索(DFS)转换为广度优先搜索(BFS),利用队列实现。,具体通过翻转二叉树的左子树,然后判断翻转后的左子树与原始的右子树是否完全相同。
2024-04-17 15:26:01
824
原创 面试经典150题——翻转二叉树
递归函数在每个节点上执行恰好一次,因此总的时间复杂度是 O(n),其中 n 是树中节点的数量。这里的递归调用是算法的核心部分。综上所述,该算法的时间复杂度为 O(n),空间复杂度取决于树的高度,在最坏情况下为 O(n),在平衡树的情况下为 O(log(n))。分析题目可以看出,其实就是从下到上的左右节点互换操作,其实上也是可以进行递归操作的,这是因为每一个子操作和父操作都是一样的方式。如果树是平衡二叉树,树的高度近似为 log(n),其中 n 是树中节点的数量,因此空间复杂度为 O(log(n))。
2024-04-17 12:43:50
466
原创 面试经典150题——二叉树的最大深度
这个题目有过一定基础的都应该知道,采用递归解决问题,因为要求一个二叉树的深度(也就是高度),其实上就是根节点的左子树和右子树中高度最高的那个。最好的情况下,二叉树是平衡的,递归调用的最大深度等于树的深度,即 O(log n),其中 n 是二叉树中的节点数。在最坏情况下,二叉树是完全不平衡的,递归调用的最大深度等于树的高度,即 O(h),其中 h 是二叉树的高度。综上所述,时间复杂度为 O(n),空间复杂度最坏情况下为 O(n),最好情况下为 O(log n)。在最坏情况下,每个节点都要被访问一次。
2024-04-15 12:15:32
215
原创 面试经典150题——删除链表的倒数第 N 个结点
该算法的时间复杂度为 O(n),其中 n 是链表的长度。这是因为算法需要遍历一次链表来计算链表的长度,然后再遍历一次链表找到要删除的节点的位置,最后进行一次删除操作。空间复杂度为 O(1),因为算法只使用了常数级别的额外空间,只使用了几个额外的指针变量。移动指针到要删除的节点的前一个节点。计算要删除的节点的位置。创建指针指向虚拟头节点。
2024-04-07 22:22:47
265
原创 面试经典150题——K 个一组翻转链表
循环),每个节点仍然只被访问了常数次(最多两次,一次是在判断是否有足够的节点进行下一次翻转,一次是在实际翻转中)。因此,遍历链表的时间复杂度是 O(n),其中 n 是链表中的节点数量。但由于这些操作是并行的,总体上仍然是 O(n)。综上所述,算法的空间复杂度是 O(1),也就是常数空间复杂度,满足题目要求使用常数级额外空间的约束。函数是递归调用的,但由于它在每次翻转后都会断开递归调用,因此不会在栈上累积大量的调用帧。算法没有使用额外的数据结构来存储节点或其他信息,所有操作都是在原链表上直接进行的。
2024-04-07 08:26:54
443
原创 面试经典150题——反转链表 II
首先题目明确是单链表,left和right是两个位置,那么我们就可以知道如果遍历链表,找到某个位置等于left的节点,就说明从这个节点开始需要反转,找到位置等于right的节点,就说明反转截止,把后续节点拼接上就行了。但是在实际解答过程中我发现对于left等于1的情况总会报错,因为我在代码中定义了left之前的一个节点,为了方便后续的拼接用的,但是如果left等于1,那么它就没有前序节点,处理起来就比较复杂。对于后续每一个节点,先取出它的下一个节点存储在temp,然后将当前节点指向它的前一个节点。
2024-03-15 12:11:13
454
原创 面试经典150题——合并两个有序链表
所以我们只需要从前向后遍历两个链表,在两个链表不空的情况下,比较下一个节点的大小,每次把较小的那个值放在结果链表中,最终遍历结束得到的就是合并后的结果。时间复杂度:假设两个链表的长度分别为 m 和 n,则时间复杂度为 O(m + n),因为需要遍历两个链表来比较和合并元素。空间复杂度:额外使用了常数个额外的指针变量和一个结果链表,因此空间复杂度为 O(1)。如果list1的值小于list2的值,将list1的值放入结果链表中。如果list2的值小于list1的值,将list2的值放入结果链表中。
2024-03-09 19:11:22
270
原创 面试经典150题——两数相加
这个题目虽然标的是中等,但是大家看一下应该还是比较容易想到思路的,这不就相当于小学学的两数求和嘛,需要注意的就是进位的问题,其它没什么太过于复杂的,因此直接给出代码思路。综上所述,思路一和思路二的时间复杂度均为 O(max(m, n)),而思路一的空间复杂度为 O(max(m, n)),思路二的空间复杂度为 O(1)。遍历两个链表,获取两个链表的值,计算当前位的值,更新进位,更新当前位的值,更新两个链表的指针。遍历两个链表需要 O(max(m, n)) 的时间,其中 m 和 n 分别是两个链表的长度。
2024-03-08 17:40:24
533
原创 链表与python实现
这段代码定义了一个 ListNode 类来表示链表中的节点,每个节点包含一个值 val 和一个指向下一个节点的引用 next。然后定义了 LinkedList 类来实现链表的操作,包括 append 方法用于在链表尾部添加节点和 print_list 方法用于打印链表的所有节点。,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针(或引用)。链表中的节点是动态分配的,可以在运行时根据需要创建和销毁。在测试部分,创建了一个链表对象 ll,并向其中添加了三个节点,最后打印出整个链表。
2024-03-07 16:43:01
163
原创 面试经典150题——环形链表
把这种思路对应在题目中,就是设置一个标记来表示我是否走过这个地方,如果走过我在后续遍历过程中又能回到这个地方,那么就说明链表存在环状结构,如果走到目的地(结尾),发现还是没有经历过标记点,那么就说明不存在环状结构,返回false。时间复杂度:O(n),其中 n 是链表的长度。空间复杂度:O(n),需要使用一个哈希表来存储链表中的节点的哈希值,因此空间复杂度是 O(n),其中 n 是链表的长度。空间复杂度:O(n),需要使用一个哈希表来存储链表中的节点,因此空间复杂度是 O(n),其中 n 是链表的长度。
2024-03-07 16:39:27
834
原创 面试经典150题——基本计算器
如果我们要计算就得从原始栈弹栈,那我们可不可以把操作符放在另一个栈中,操作数放在一个栈中,通过两个栈,同时在出现加减法时直接就进行运算(直到遇到左括号或者栈为空),就可以避免不断的弹栈的过程。比如还是对于这个测试用例:在开始时,不断入栈,也要判断当前符号如果时加减法时,前面的已经计算过的内容是否能够计算,如果可以计算就需要先计算,因为这样可以避免数字的堆积,比如对于如下图的情况:这时发现当前(黄色)为加/减运算,就要判定前面的内容是否可以计算,因为此时表达式为。
2024-03-06 15:35:13
1025
原创 面试经典150题——逆波兰表达式求值
时间复杂度:同样是 O(n),因为整体操作与 evalRPN 方法相似,但是使用了数组模拟栈,数组的大小为 (n + 1) / 2,而且每个元素只入栈或出栈一次,所以时间复杂度与 evalRPN 方法相同,都是线性时间复杂度。因为每发现一个运算符号,就说明就要对前面的操作数进行运算了,就相当于入栈时发现入栈的元素是运算符号,就弹出两个运算数进行运算,并将新的运算结果放入栈作为一个新的运算数。综上所述,三种方法的时间复杂度都是 O(n),空间复杂度也都是 O(n),其中 n 为 tokens 数组的长度。
2024-03-05 11:03:00
1028
原创 面试经典150题——最小栈
pop操作将元素加入数组,并将尾指针前移1,同时比较pop的元素和最小元素大小,如果pop出的元素就是最小元素,那么遍历数组找到新的最小值存储在指针。因此,总体来说,push、pop 操作的时间复杂度取决于栈中元素的数量,并且可能会触发数组扩容和缩容,而这些操作的时间复杂度与元素数量成线性关系。随着元素的增加、删除以及数组的扩容和缩容,数组的空间会动态变化,但总体上考虑,空间复杂度为 O(N),其中 N 是栈中的元素个数。查找新的最小值的操作为 O(N),其中 N 是当前栈中的元素个数。
2024-03-04 13:30:30
485
原创 人工智能底层自行实现篇2——多元线性回归
多元线性回归模型是一种多元线性方程,它是通过多个自变量来预测因变量的一种模型。通过结果来看,多元线性回归模型的R方为0.95,说明模型的拟合效果还是非常好的😂。
2024-03-03 11:32:28
1413
原创 面试经典150题——简化路径
然后,对字符串数组进行遍历,执行了一些常数时间的操作,例如栈的入栈和出栈操作。综上所述,思路一和思路二的时间复杂度都是线性的,但在空间复杂度上稍有不同。思路一的空间复杂度主要取决于路径中每个块的长度,而思路二的空间复杂度主要取决于路径中块的数量。ArrayList 的空间取决于路径中块的数量,而 StringBuilder 的空间取决于路径中每个块的长度。栈的空间取决于路径中块的数量,而字符串数组的空间取决于路径中块的数量以及每个块的平均长度。,其实就是表示当前路径,那说明可以省略,就删除该部分。
2024-03-03 10:15:19
857
原创 面试经典150题——有效的括号
这个题目一般学过一种语言的都很熟悉,就是使用栈,如果发现匹配就出栈,如果不匹配就入栈,利用栈的先进后出的特点解决题目。如果发现当前字符(也就是 i 指针指向的字符)和栈顶(也就是peek指针指向的字符)不匹配,就进行入栈操作,也就是说将peek指针后移。我分析了一下之所以上面的方法效果并不好是因为栈的来回操作是比较耗时的,因此我们能不能想出一种其他办法,不使用额外的栈空间来实现呢?也就是它在思路一二的基础上,根据括号的方向来判定,左括号是肯定需要入栈,右括号才来判定是否需要出栈。
2024-03-02 11:46:05
628
原创 底层自行实现——监督学习算法(1线性回归)
Yβ0β1XϵYβ0β1XϵYYY:因变量或目标变量。XXX:自变量或解释变量。β0\beta_0β0:截距项,是当X0X=0X0时YYY的期望值。β1\beta_1β1:斜率项,表示XXX每变化一个单位,YYY变化的量。ϵ\epsilonϵ:误差项,表示模型未能解释的随机变异。关于ϵ\epsilonϵ的解释假设你是一位经济学家,正在研究家庭年收入(因变量YYY)与家庭主要收入者的教育年数(解释变量XXX。
2024-03-01 20:29:27
877
原创 面试经典150题——用最少数量的箭引爆气球
首先遍历第一个区间【1,6】,查看每一个位置能够附带击破的气球的个数,在数字1的位置,发现只能附带击破自己本身1个气球,在【2,4】发现能击破两个,但是在【5,6】(因为等于5就可以击破蓝色气球:满足。),所以我们肯定得将箭设置成能击破最多个数气球的位置,也就是击破三个气球,然后移除这些已经被击破的气球,继续寻找下一个区间,以此循环,直到没有剩余的气球。时间复杂度:O(n log n),排序的时间复杂度是O(n log n),遍历区间的时间复杂度是O(n),因此总的时间复杂度是O(n log n)。
2024-03-01 12:15:00
1345
原创 面试经典150题——插入区间
将新区间的开始更新为当前区间的开始和新区间开始中的较小者,新区间的结束更新为当前区间的结束和新区间结束中的较大者。,那么当前区间与新区间无重叠,并且因为区间列表是有序的,当前区间是所有可能与新区间无重叠并且在其之前的最后一个区间。如果当前区间的开始大于新区间的结束,说明后面的区间也不会重叠,将新区间添加到新列表中,并将剩下的原始区间全部添加到新列表中,然后跳出循环。如果当前区间的结束小于新区间的开始,说明没有重叠,将当前区间添加到新列表中。遍历区间列表的时间复杂度为O(n),其中n是区间列表的长度。
2024-02-29 14:56:08
377
原创 面试经典150题——汇总区间
的值,那么说明当前数字为一个新的区间的头,同时上一个区间的尾部也可以确定就是当前数字的上一个数字。(nums的首个元素肯定是一个区间的头部)来存储结果字符串,其大小取决于输入数组中连续区间的数量。在最坏的情况下(即数组中没有任何连续的元素),这个列表的大小将与输入数组的大小相同。在这个过程中,每个元素都被访问一次来确定它是否属于一个新的区间或者是当前区间的延续。:在每次迭代中,进行的是常数时间的操作,包括比较、赋值、以及在列表。在最坏情况下,这个列表中的元素数量与输入数组。对应了“4-5”,对于单独的。
2024-02-28 09:23:14
608
原创 面试经典150题——最长连续序列
两种方法都具有O(n)的时间复杂度和O(n)的空间复杂度。主要区别在于实现细节和具体操作。优化版方法直接在遍历过程中更新和记录序列的长度,而基于HashSet的方法则是先构建一个集合,再通过这个集合找到所有可能的序列起点,从而构建序列。
2024-02-27 13:01:28
852
原创 基于自然语言的跨模态行人重识别技术研究
因此度量学习过程中,模型对于训练集的行人身份标签数量并不敏感,比表征学习的方法更加适用于数据集规模较大的情况。在图像处理中的识别或者分类任务,度量学习比表征学习更加常用,在实验中的效果一般也好于表征学习方法。现在很多的网络模型是同时包含这两方面[46]。两者联合的方式也比较简单, 实际的联合过程一般是在普通度量学习方法的前提下, 在特征层后面添加一个全连接层进行身份分类训练, 该方式可以超越表征学习和度量学习表现效果。
2024-02-24 21:54:18
1239
计算机体系结构课程报告-摩尔定律的过去,现在与未来
2023-04-29
一个后端静态资源模板,快速搭建网页的必备
2023-04-06
HFUT计网1000页PPT复习资料
2023-03-31
Zotero链接infini-cloud
2024-07-25
windows11删除快捷键设置
2024-07-02
windows用户文件夹消失
2024-06-27
基于文本描述的跨模态行人重识别模型训练异常
2024-05-24
日志训练过程中缺失但还能正常运行
2024-04-22
chatgpt公式复制到typora
2024-02-07
chatgpt出现parseerror katex parse error
2024-02-04
edge浏览器无法搜索
2023-08-21
采用JDBC+druid数据库连接池出现异常
2023-06-19
ppt无法加载AxGlyph.ppam
2023-04-14
Navicat中MongoDB如何将时间按照升序排序?
2023-03-12
从零开始的操作系统没有编译器如何编译代码成机器码执行
2023-01-21
windows c语言创建线程
2023-01-16
win10弹出edgeupdater
2023-01-04
sqlServer主键设置
2023-01-03
windows10弹出edgetaskUpdater
2023-01-03
.net在导入system.web时找不到
2023-01-01
verilog设计cpu时什么情况下才需要输入时钟
2022-12-22
ML-Agents生成的环境如何对接自己的python代码
2022-11-19
ML-agents如何生成可以交互的exe文件
2022-11-19
Windows系统的快捷方式底层是包含哪些部分?
2022-11-16
Anaconda更新out of memory
2022-11-15
MIPS为什么要设置I,J,R三种指令结构
2022-11-15
Latex伪代码对齐
2022-11-12
由于找不到libgcc_s_sjlj-1.dll
2022-11-08
paddle强化学习
2022-11-07
pycharm跳出modify setup
2022-11-06
3dmax删除不了物体
2022-10-06
对于wor中的表格绘制方法
2022-09-16
matlab三维散点图的绘制
2022-09-16
TeXStudio出现问题
2022-09-14
TeXStudio运行提示Could not start Default
2022-09-14
pandas处理有条件的合并
2022-09-01
德鲁伊连接池报错,更改MySQL驱动后无效
2022-08-15
scrapy部署在服务器运行一段时间出现ERROR: Error downloading
2022-08-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人