- 博客(22)
- 收藏
- 关注
原创 力扣148:排序链表
题目:给你链表的头节点head,请将其按照升序完成排列并返回排序后的链表。示例:输入:head = [4,2,1,3]输出:[1,2,3,4]解题思路:使用归并排序分别将原链表的子链表进行排序,但是有个问题,就是得先知道该链表的中间节点。可以通过快慢指针的方式找到中间节点,慢指针每次走一步,快指针每次走两步,当快指针到达链表的尾节点时,慢指针所指向的节点便是所需要的中间节点。最后,当各个子链表排序完毕后,分别将其两两融合即可得到最后的排好序的升序链表。代码:class solution
2022-04-27 09:59:32
221
原创 力扣: symmetric Tree
Task description:Given two binary trees, write a function to check if they are equal or not.Two binary trees are considered equal if they are structurally identical and the nodes have the same value.递归版solution:class Solution{public: bool isSymmetric
2022-04-08 10:41:23
71
原创 力扣:Merge k Sorted Lists
Task: Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.给出多个已经排好顺序的链表,使用一定的算法将其融合。解题思路:依次融合集合中相邻的两个链表,即可以迭代的使用融合两个排序链表的函数。Code:class Solution{ public: ListNode *mergeKLists(vector<ListNode *> &am
2022-03-21 16:29:08
792
原创 Leetcode419:甲板上的战舰
题目:给你一个大小为 m x n 的矩阵 board 表示甲板,其中,每个单元格可以是一艘战舰 ‘X’ 或者是一个空位 ‘.’ ,返回在甲板 board 上放置的 战舰 的数量。战舰只能水平或者垂直放置在 board 上。换句话说,战舰只能按 1 x k(1 行,k 列)或 k x 1(k 行,1 列)的形状建造,其中 k 可以是任意大小。两艘战舰之间至少有一个水平或垂直的空位分隔 (即没有相邻的战舰)。示例:输入:board = [[“X”,".",".",“X”],[".",".",".",“X
2022-02-17 12:10:32
7676
原创 记录Leetcoder-恢复搜索二叉树
题目:给你二叉搜索树的根节点 root ,该树中的 恰好 两个节点的值被错误地交换。请在不改变其结构的情况下,恢复这棵树 。示例:输入:root = [3,1,4,null,null,2]输出:[2,1,4,null,null,3]解释:2 不能在 3 的右子树中,因为 2 < 3 。交换 2 和 3 使二叉搜索树有效。需要使用到的知识点:1, 中序遍历搜索二叉树得到的元素向量为递增向量。2,在含有交换位置的递增向量中找到相应的被交换的元素。3,按照节点val恢复被交换节点的搜索树
2022-02-14 22:37:31
493
原创 记录关于二叉树中的广度优先搜索(遍历)方法及相关算法题目
关于二叉树按广度优先搜索需要使用一个辅助队列数据结构来存储树的每层节点信息,主要原因是队列具有first in first out 性质,及符合一层层遍历树的逻辑,而栈结构具有first in last out即符合深度优先搜索策略。按广度优先搜索策略遍历二叉树代码:class Solution{public: vector<vector<int> > levelOrder(TreeNode* root){ queue<TreeNode*> que;...
2022-02-11 16:16:16
750
原创 记录一下Pytorch中scheduler的使用
scheduler主要是为了在训练中以不同的测略来调整学习率,当然如果不涉及到学习率大小的变化也就用不到该函数了。下面分别为不同的变化测略及相应的代码实例:1,指数衰减:在训练的过程中,学习率以设定的gamma参数进行指数的衰减。optimizer = torch.optim.SGD(net.parameters(), lr = 0.001)expr_scheduler = torch.optim.lr_scheduler.ExponentialLR(optimizer, gamma = 0...
2022-02-08 00:14:34
7452
原创 关于pytorch中LSTM的参数及输入数据的维度问题
LSTM为处理序列问题的RNN网络结构的变种,在此记录记录一下关于LSTM的参数和输入维度问题:1,pytorch中的LSTM的参数:model = torch.nn.LSTM(input_size, hidden_size, num_layers, bias, batch_first, dropout, bidirectional)参数解析:input_size: 输入数据最后一维的大小,比如输入一个句子,句子中每个单词都是5个字母, 则input_size = 5.hidden_siz
2022-02-06 18:32:54
5008
原创 基于Pytorch中的Dataset和Dataloader读取Voc类目标检测数据集
记录一下使用Dataset和Dataloader读取诸如VOC类目标检测数据集的方法。目标检测任务核心两点:1,找到图片中目标的具体位置,使用框标记出来。2,对找到的目标的种类进行识别。所以需要读取的数据主要也为两种数据:图片,目标位置信息及种类,而第二类信息一般为.xml文件格式进行存储。代码实现:import torchfrom torch.utils.data import Datasets, DataLoaderimport numpy as npimport cv2 # 使用P
2022-01-28 18:47:32
2848
原创 关于C++类中关键字explicit的用法记录
explicit应用的意义背景按照C++规定, 当构造函数只有一个参数时,在调用该构造函数时会发生隐式转换,即将该构造函数对应的数据类型具体对象转换为该类对象, 即将= value中的value自动转化为该构造函数的参数。class string{ string(const char* p){}}//类的实例化string s1 = 'mike'; //在该处发生的隐式转换为:string s1 = string('mike') 隐式转换引起驳论的情况:class string2{
2022-01-25 18:41:28
417
原创 记录一下关于SPP(空间金字塔池化模块)使用pytorch的实现代码
SPP模块主要是为了应对当网络中存在全连接层时,对中间层级的输出特征的形状具有不变的要求,其具体思想可以理解为将具有一定形状的输出特征分成指定数量的子特征,然后使用池化的手段将其转化成具有一定维度的特征矩阵,最后进行拼接,从而使网络具有输入图片任意尺寸的“适应能力”。具体实现代码如下(基于pytorch):import mathimport torchimport torch.nn.functional as Fclass SPPnet(torch.nn.Module): def __i..
2022-01-19 00:21:28
1965
1
原创 记录一下wandb的用法
wandb:wandb的名字是weights and biase的缩写,也就是对应着神经网络中的权重和偏差,所以这款软件的功能就是帮助我们记录网络训练过程中的超参数和相关的输出指标的变化,并将相应的结果可视化并仅从对比,以此来帮助我们进行快速的网络调参。wandb的四项核心功能:1,跟踪训练过程,将结果可视化。2,保存和共享训练过程中一些细节、有价值的参数。3,使用超参数调优来优化网络模型。4,数据集和模型版本化。由于具有强大的兼容性,wandb可以和pytorch, keras, tens
2022-01-05 10:15:36
5547
8
原创 python中getattr()和setattr()的使用
关于python中getattr()和setattr()的使用**getattr()**用于获取类中某一属性的值:getattr(instance, ‘instance_object’, default_value)其中若’instance_object‘这个属性在特定类的实例化instance是存在的则返回其值,不存在则返回所设定的默认值default_value:class demo(): name = 'demo' def __init__(self): pass def demo_f
2021-11-09 13:42:47
750
原创 Python中关于@classmethod关键字的使用
@classmethod主要是为了解决python中关于函数重载的目的,大家也可以这样理解,在正常的情况下我们使用类中函数的时候需要先将类实例化,然后再调用类中的成员函数:class ceshi(): def __init__(self): pass def first(self): print("the first") def second(self): print("teh second")当我们想要调用first()函数时:ceshi_ = ceshi()ceshi_.fi
2021-11-09 10:15:20
295
原创 C++中标准容器deque的相关方法
一,定义及如何初始化定义:deque a;deque a(10);deque a(10,1);deque b(a): //使用已存在的deque a来初始化bdeque b(a.begin(), a.begin()+n);使用数组进行初始化:int n[] = {1,2,3,4};deque a(n, n+3);deque a(&n[1], &n[3]);二,deque的基本成员操作函数容量函数deque deq;deq.size(); //容器的大小deq
2021-10-08 18:18:42
148
原创 Pycharm Debug调试
使用Debug调试代码1,打断点一个断点标记了一个代码行,当Pycharm运行到该行代码时会将程序暂时挂起。注意断点会将对应的代码行标记为红色,取消断点的操作也很简单,在同样位置再次单击即可。如图所示,打了两个断点。2.代码调试我们有几种方法来debug程序分别是通过右击代码和小虫子的图标进行debug接下来会Pycharm会执行以下操作:(1)PyCharm开始运行,并在断点处暂停(2)断点所在代码行变蓝,意味着Pycharm程序进程已经到达断点处,但尚未执行断点所标记的代码。(
2021-06-19 16:39:14
179
原创 2021-06-05
RuntimeError: Error(s) in loading state_dict for SSD: Missing key(s) in解决办法:当用如下方式读取已经训练好的模型出现Missing key(s) 时:如下:net.load_state_dict(torch.load(args.trained_model))换成如下的加载代码:net.load_state_dict(torch.load(args.trained_model), False)...
2021-06-05 19:05:13
66
原创 torch中torch.cumsum()的使用
看别人的文章转载的:1.写法。先不管结果如何,代码得先写出来。函数原型:torch.cumsum(input, dim, *, dtype=None, out=None) → Tensor返回维度dim中输入元素的累计和。【功能:累加】例如,如果输入是大小为N的向量,则结果也将是大小为N的带有元素的向量。【运算后维度不变】说明必须要有两个参数,一个是tensor类型的输入,也就是数据,另外一个是操作的维度,这也是今天的核心,很多人在维度上是不理解的,或者说是混淆的。第一种写法(官网):tor
2021-05-14 22:27:50
3381
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人