自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Ema1997的博客

星星之火,可以燎原

  • 博客(361)
  • 收藏
  • 关注

原创 一些需要用到的latex语句

摘要\begin{abstract}\end{abstract}\section{Introduction} 大标题\subsection{Language} 小标题{\bf There will be no extra page charges for CVPR 2018.} 加粗\verb'\cvprfinalcopy' 正体\em 斜体{\tt fg324.pdf}\large\url{http://www.pamitc.org/documents/m...

2021-07-29 21:21:46 735

原创 linux命令行连接百度网盘快速上传下载数据(bypy)

摘要现在的深度学习代码基本都是在服务器上运行,而大部分的服务器都是远程服务器,只支持命令行操作,所以有些在图形界面上比较容易下载的文件,在服务器上使用命令行很难下载。而且由于远程服务器和本地之间数据通讯速度不稳定,在大部分情况下通讯速度较慢,所以即使本地使用图形界面下载好数据,使用scp命令直接从本地上传数据到服务器耗时长。本文基于以上问题,讲解了基于百度网盘和bypy工具快速下载或上传数据到只能使用命令行操作的远程服务器的方法。同时还讲解了bypy工具的其他使用方式。方法介绍在远程服务器安装byp

2021-06-18 17:00:26 5130

原创 leetcode专题训练1035. Uncrossed Lines

这道题算是最长公共子序列的变形。会写公共子序列就可以写这道题。主要的难点是怎么看出这道题是最长公共子序列。设dp[i][j]为到nums1数组的第i个元素、nums2数组的第j个元素(从0开始)的最长公共子序列长度,递推逻辑:dp[i][j] = max(dp[i-1][j], dp[i][j-1])if nums1[i] == nums2[j]: dp[i][j] = max(dp[i][j], dp[i-1][j-1]+1)完整代码:class Solution: def maxUn

2021-05-21 18:56:16 209

原创 leetcode专题训练1269. Number of Ways to Stay in the Same Place After Some Steps

又是一道dp,本来想着滚动数组做,后来想了想好像不太好写,就直接开了个二维数组。class Solution: def numWays(self, steps: int, arrLen: int) -> int: maxNum = 10**9+7 dp = [[0 for i in range(min(steps+1, arrLen))] for j in range(steps+1)] dp[0][0] = 1 for i

2021-05-13 19:38:05 153

原创 leetcode专题训练1310. XOR Queries of a Subarray

很简单的一道dp加异或性质的题。比如一个长度为4的序列,数字的索引分别是0, 1, 2, 3,那么可以先把从初始位置到所有位置的异或求出来,若要求某个区间,比如[1, 2]区间的异或时,直接用dp[2] xor dp[0]即可,也就是dp[r] xor dp[l-1]。class Solution: def xorQueries(self, arr: List[int], queries: List[List[int]]) -> List[int]: dp = [arr[0

2021-05-13 00:15:54 114

原创 leetcode专题训练329. Longest Increasing Path in a Matrix

很简单的一道题啊,DFS加自定义比较函数的priorityqueueimport queueclass Node: def __init__(self, value, x, y): self.value = value self.x = x self.y = y # 按照value升序排列 def __lt__(self, other): return self.value < other.valuecla

2021-04-29 22:25:39 116

原创 leetcode专题训练295. Find Median from Data Stream

这道题在插入元素时,维持一个有序数组,维持的方式是通过二分查找,找到当前插入元素应该插入位置,时间复杂度为O(logn)O(logn)O(logn),再利用list的insert函数插入O(n)O(n)O(n),插入元素的时间复杂度为O(logn)+O(n)=o(n)O(logn)+O(n)=o(n)O(logn)+O(n)=o(n),查询中位数的时候,直接按位置索引即可,查询的时间复杂度为O(1)O(1)O(1)。需要注意的是,如果一个插入的元素比当前列表中所有元素都小,二分查找是找不出应该插入位置的,

2021-04-28 16:50:30 104

原创 leetcode专题训练315. Count of Smaller Numbers After Self

一开始就联想到了用归并排序求逆序数这道题,可是当时求逆序数的时候,不需要知道逆序数出现在哪个位置,只用记录逆序数个数即可,所以改了一下当时的代码,利用index数组记录某位置的元素的初始位置,再通过result[index[pos]] += 1即可把当前逆序数加入到原位置的结果。然而我写的加入到原位置的代码会超时。超时代码:class Solution: def countSmaller(self, nums: List[int]) -> List[int]:

2021-04-28 15:24:15 135

原创 leetcode专题训练 218. The Skyline Problem

最开始看到这道题先想的线段树,后来发现并不用得上线段树。看题解直接把所有的线扫一遍就行了。参考题解写了一份代码,估计下回遇到这道题还是不会做哈哈哈哈哈。import queueclass Node: def __init__(self, x, y): self.x = x self.y = y def __lt__(self, other): if self.x == other.x: return self.y

2021-04-27 15:30:22 122

原创 leetcode专题训练149. Max Points on a Line

这道题1 <= points.length <= 300,所以直接计算任意两点之间的斜率,并把到同一个点相同斜率的点的个数记下来,再和当前结果比较就可以了。时间复杂度O(n2)O(n^2)O(n2)。需要注意的斜率为无穷的情况。class Solution: def maxPoints(self, points: List[List[int]]) -> int: l = len(points) dic = [dict() for i in rang

2021-04-26 16:23:17 122

原创 leetcode专题训练140. Word Break II

直接DFS就可以了,由于之前的字符串都匹配上之后,才涉及之后的字符串是否能匹配上的问题,所以问题就可以转化为逐步获取目标字符串,就又转化为了路径问题。import collectionsclass Solution: def wordBreak(self, s: str, wordDict: List[str]) -> List[str]: ls = len(s) dictWord = collections.defaultdict(list)

2021-04-26 15:45:50 105

原创 leetcode专题训练127. Word Ladder

最先想出的方法的时间复杂度是O(n2l)O(n^2l)O(n2l)的,其中n是wordList长度,l是单词长度,果然超时了。import queueclass Solution: def ladderLength(self, beginWord: str, endWord: str, wordList: List[str]) -> int: lWord = len(beginWord) lList = len(wordList) # 连

2021-04-26 14:54:10 138

原创 leetcode专题训练297. Serialize and Deserialize Binary Tree

BFS层次遍历整棵树,按层保存所有节点的值,由于要回复回原树,所以None值也要保存,在本代码中,None位置在字符串中用’N’表示。需要注意负数和多位数的情况,所以使用e来代表一个数的结尾,从而可以处理该情况。在回复树的结构的时候,按层恢复即可。(看题解可以先把str用split函数处理,就不用我代码中复杂的找’e’位置的过程了)# Definition for a binary tree node.# class TreeNode(object):# def __init__(self,

2021-04-25 16:15:10 136

原创 leetcode专题训练301. Remove Invalid Parentheses

DFS一般用在路径求解问题上,这道题也算是一种变形的路径求解。具体的路径选择就是要不要添加当前的括号。这道题和第85题均是先对当前的数据遍历,进行了一次处理之后再往下做。就相当于把问题分解为两部分了。第一部分先遍历字符串,求出整个字符串中需要删除的左括号数和右括号数,分别存在leftRemove和rightRemove中。第二部分再对字符串进行深度优先搜索DFS,如果遍历到字符串尾后,所有该删除的左括号和右括号都被删除了,那么就说明找到了一条路径,找到了一个解。在DFS时,对是否向路径添加某个符号的过程进行

2021-04-25 14:16:58 114

原创 leetcode专题训练312. Burst Balloons

解法1:主要思路就是将戳气球的问题转化为往区间里加气球的问题,也就是将整个过程逆过来。solve(i, j)代表着(i, j)区间内所有气球全部被加好后,最多的coin个数。遍历(i,j)区间内第一个可以加的气球的位置mid,由于其他气球都还没加,所以此时加mid后coin个数为nums[mid]*nums[i]*nums[j],之后再以mid切割(i, j),分别计算solve(i, mid)和solve(mid, j)的值,便知道第一个加此mid位置时,最多能获得的coin数。遍历mid位置,取max

2021-04-22 22:26:03 132

原创 leetcode专题训练 239. Sliding Window Maximum

优先队列,需要学习一下优先队列的自定义排序,而且python的优先队列的get函数会在取队头的同时将其弹出(注意priorityqueue没有que[0]这个操作,只能通过queue.get()取元素,collections的deque有que[0]操作,可取队列头)。import queueclass Node: def __init__(self, num, index): self.num = num self.index = index

2021-04-21 22:03:40 88

原创 leetcode专题训练85. Maximal Rectangle

84题的升级版。将到每个位置的最长的连续序列长度记录到left数组中,就转化为了85题了。切记,写完代码,一定先要看特殊情况,测完所有样例,之后算时间复杂度**,最好是在写代码之前就算好。class Solution: def maximalRectangle(self, matrix: List[List[str]]) -> int: if not matrix: return 0 row = len(matrix)

2021-04-19 16:38:53 127 1

原创 leetcode专题训练128. Longest Consecutive Sequence

直接排序一下,再找连续就好了。class Solution: def longestConsecutive(self, nums: List[int]) -> int: nums.sort() l = len(nums) if l == 0: return 0 maxLen = 1 left = 0 nowLen = 1 for r in range(1,

2021-04-16 17:28:33 87

原创 leetcode专题训练124. Binary Tree Maximum Path Sum

这道题是很普通的一道DFS,思路大概就是深度优先遍历树中所有节点,返回以当前节点开始的最长的单边路径的长度,而由于路径可以是左子树连到根连到右子树,所以最长的路径为max(root.val, root.val+max(maxLeft, maxRight))。然而我居然WA了两次,第一次是因为调用函数时调用错了,第二次是因为忽略了左右边的最长路径都可能为负值的情况,切记切记。到时候笔试的时候可不会提示错误用例。写法一:# Definition for a binary tree node.# class

2021-04-15 22:55:56 138

原创 leetcode专题训练647. Palindromic Substrings

这道题我的思路是找到所有可能的中心位置,再从中心位置扩展,找到所有的回文子串。比如一个长度为5的串,其中心位置可能为0、1、2、3、4索引位置,那么回文子串长度就为奇数,也可能是0、1之间,1、2之间,2、3之间,3、4之间,4、5之间,那么回文子串长度就为偶数。从中心位置开始往外扩展,直到扩展到边界或者不再是回文子串。具体看注释。class Solution: def countSubstrings(self, s: str) -> int: l = len(s)

2021-04-14 23:23:37 96

原创 leetcode专题训练146. LRU Cache

解法1:解法1我是当作大模拟来做的。由于key如果被用,那么无论之前在什么位置,都要被换到最新使用的位置。所以一直在想什么数据结构可以灵活换位置,后来发现可以用链表,所以维护了一个链表,链表中的顺序由最远使用到最近使用。而且由于需要把最远使用的弹出,把最新使用的插入,所以链表的头和尾都需要有个指针指示。在本代码中,分别使用cache_head和cache_tail表示。而取键值的操作,为了不每次都从链表头遍历,我使用了一个dict数据结构,这个数据结构单纯的用于存储LRU中的键值,取值的复杂度为O(1),

2021-04-12 23:10:13 128

原创 leetcode专题训练 97. Interleaving String

这道题是一道动态规划的题,首先要判断空的异常情况,之后判断s1和s2合并后字符串长度和s3不同的情况,然后就是动态规划了。动态规划公式:dp[i][j] = (dp[i-1][j] and s1[i-1] == s3[i+j-1]) or (dp[i][j-1] and s2[j-1] == s3[i+j-1])其中i和j分别代表着到s1的第i个数,到s2的第j个数,所以到取s1或s2种索引时,要相应的减1。dp[i][j]为True则说明到s1的前i个数,s2的前j个数,可以组合成s3的前(i+j)

2021-04-11 23:50:32 79

原创 leetcode专题训练96 Unique Binary Search Trees

解法1:这道题和95题 Unique Binary Search Trees II很像,但是解题思路却相差很多。先用上一道题的思路按照递归写了一下,最后TLE超时了,后来想了一下超时原因,发现这道题由于只用输出个数,不用输出具体的树,所以右边界和左边界的差值相同的子树,数量都是相同的,所以就可以打个表,把已经算过的右边界和左边界的差值记录下来,下次再遇到相同的范围时,可以直接从表中获得结果,不用再回溯了。需要注意在为表赋初始值时,一定要注意这个初始值能否真正到达。最开始我设置了result_list[1

2021-04-09 21:08:52 121

原创 leetcode专题训练95 Unique Binary Search Trees II

有关树的问题时,一定要先想到回溯法,因为树独特的结构,使得问题在很多情况下可以由整个树的问题分解为左子树和右子树的问题,从而逐步解决问题。二叉搜索树关键的性质是根节点的值大于左子树所有节点的值,小于右子树所有节点的值,且左子树和右子树也同样为二叉搜索树。这道题的目标是找到有n个节点的所有的不同结构的二叉搜索树。而由于这些二叉搜索树的左右子树也均为二叉搜索树,所以可以将问题由之前的找[1, n]范围内的所有二叉搜索树,转化为找[1, i-1]、[i+1, n]范围内的所有二叉搜索树,也就是将问题分解为找以i

2021-04-09 19:39:37 94

原创 计算机视觉顶会顶刊首页格式

有了这篇文章,妈妈再也不怕我不知道arxiv上的作者想投哪里了。一、顶会CVPR、ICCV很类似,所以此处就先放了CVPR的首页ICMLNeurIPS和ICLR很类似,此处放NeurIPS首页AAAIACM MMIJCAIECCV二、顶刊TPAMIIJCVTIP无聊但有趣的一篇博客好吧,只是单纯的无聊...

2020-12-21 17:09:10 348

转载 CNN中一些特殊环节的反向传播(池化层+relu)

转载自:https://blog.csdn.net/qq_21190081/article/details/72871704在深度学习笔记(2)——卷积神经网络(Convolutional Neural Network)中我们介绍了CNN网络的前向传播,这一篇我们介绍CNN的反向传播,讲到反向传播的时候实质就是一大堆求梯度的数学公式,这些公式其实已经在深度学习笔记(1)——神经网络(neural network)那篇博客中介绍过了,所以这里就不再介绍。但是传统的神经网络无论是隐层还是激活函数的导数都

2020-12-14 12:31:54 1243

转载 Google提出的新型激活函数: Swish激活函数

一个实验效果很好的激活函数。。。。。可能是单纯试出来的。。。。。简介Swish是Google在10月16号提出的一种新型激活函数,其原始公式为:f(x)=x * sigmod(x),变形Swish-B激活函数的公式则为f(x)=x * sigmod(b * x),其拥有不饱和,光滑,非单调性的特征,而Google在论文中的多项测试表明Swish以及Swish-B激活函数的性能即佳,在不同的数据集上都表现出了要优于当前最佳激活函数的性能.论文地址:https://arxiv.org/abs/1710

2020-11-12 16:43:51 1320

转载 xargs 命令教程

转载自:http://www.ruanyifeng.com/blog/2019/08/xargs-tutorial.html万分感谢作者: 阮一峰日期: 2019年8月 8日xargs是 Unix 系统的一个很有用的命令,但是常常被忽视,很多人不了解它的用法。本文介绍如何使用这个命令。一、标准输入与管道命令Unix 命令都带有参数,有些命令可以接受"标准输入"(stdin)作为参数。$ cat /etc/passwd | grep root上面的代码使用了管道命令(|)。管道命令的作用

2020-10-21 20:38:12 300

转载 如何提升科研能力

博文未完成…如果之后看到了更好的方法论依然会继续更新继b站之后,发现b乎真是个好地方一、选题首先第一步,即便你老板放养你,他肯定也是有一个project或者topic让你做的,而一般这种放养的老板topic都给的很大,比如,电催化,没了。你爱做啥做啥,他不管。分解水也行,降解CO2也行,合成NH3也行,各种。那这个时候你就需要给你自己确定一个比较specific的题目,你到底要用这个电催化干嘛,怎么确定呢,容我慢慢说。。。第一,你得先学会查业内相关文献,这里就有几个比较通用的搜索引擎,如果是理

2020-09-25 16:17:11 1288

转载 smooth L1损失和L1、L2损失区别和优势

作者:知乎用户链接:https://www.zhihu.com/question/58200555/answer/621174180来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。为了从两个方面限制梯度:当预测框与 ground truth 差别过大时,梯度值不至于过大;当预测框与 ground truth 差别很小时,梯度值足够小。考察如下几种损失函数,其中x为预测框与 groud truth 之间 elementwise 的差异:L2(x)=x2(1)L_

2020-09-24 15:14:13 1584

转载 卷积神经网络系列之softmax loss对输入的求导推导

转载自:https://blog.csdn.net/u014380165/article/details/79632950我们知道卷积神经网络(CNN)在图像领域的应用已经非常广泛了,一般一个CNN网络主要包含卷积层,池化层(pooling),全连接层,损失层等。虽然现在已经开源了很多深度学习框架(比如MxNet,Caffe等),训练一个模型变得非常简单,但是你对损失函数求梯度是怎么求的真的了解吗?相信很多人不一定清楚。虽然网上的资料很多,但是质量参差不齐,常常看得眼花缭乱。为了让大家少走弯路,特地整理

2020-09-22 17:08:14 761

转载 数学原理解释resnet缓解梯度弥散问题

转载自:https://blog.csdn.net/weixin_42662358/article/details/88593545前言本文是一位职场小白在百度实习面试被虐,发现基本的大公司都会问到网络的数学原理解释,之后学习很多的博客。对残差网络的一些深入理解,开始写人生的第一篇博客,如有差错,还请各位大佬多多指正,多多交流产生梯度弥散的原因深度学习的本质是找到一个复杂的函数来拟合输入数据和输出数据之前的转换关系。简单的说:y = f(x),这里的x和y可能是向量,也可能是矩阵。复杂的网络就是函

2020-09-22 10:17:12 529 1

原创 leetcode专题训练 94. Binary Tree Inorder Traversal

这道题是求中序遍历的题,可以用回溯法,也可以用迭代吗法回溯法# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solution: def Inorde

2020-09-21 18:33:32 136

原创 leetcode专题训练 93. Restore IP Addresses

直接dfs搞一发就行了,遍历’.'的所有可能情况,然后输出可行解。需要判断s的长度大于12的情况,因为这样肯定是不合法的,如果不判定会超时。还需要注意s1 == str(num)这条判断语句,因为’025’转化为int类型后也是在0和255之内,但不是合法的,所以需要通过s1 == str(num)语句来判断这类不合法的字符串。class Solution: def restoreIpAddresses(self, s: str) -> List[str]: def isVa

2020-09-21 16:50:47 112

原创 leetcode专题训练 92. Reverse Linked List II

这道题是第206题的升级版,与206题不同的是,这道题限制了反转的范围。206题的代码如下:# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def reverseList(self, head: ListNode) -> ListNode:

2020-09-16 13:15:47 181

原创 leetcode专题训练 206. Reverse Linked List

反转链表的问题,prev存储当前p的前一个结点,也就是反转之后当前p应该指向的结点,p1存储当前p的下一个结点,用于p的更新。反转时,核心语句为p.next=prev,之后依次更新prev和p。当p为None时反转完毕,此时的prev就是新链表的头。# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = N

2020-09-15 21:08:37 155

原创 目标检测部分知识点总结

目录一、focal loss:二、bounding box regression三、IoU计算四、NMS(non-maximum suppression,非极大值抑制)五、yolov3的loss1. conf和cls的bce loss(Binary cross-entropy loss)2. 候选框回归的MSE loss3. 最终loss六、交叉熵损失函数(cross-entropy loss)七、Faster RCNN的loss八、RoI Align和RoI Pool一、focal loss:pt=

2020-09-15 20:03:21 524

原创 leetcode专题训练 91. Decode Ways

这道题最开始用的暴力,直接TLE。后来看了题解说用动规。当前位置i的所有方案有两种转移方式,一种是通过dp[i-1]转移,也就是在s[i]为一个合规的可代表字母时,dp[i]+=dp[i-1];第二种转移方式是通过dp[i-2]转移,在s[i-1: i+1]为一个合规的可代表字母时,dp[i]+=dp[i-2]。然而需要注意的是,为了使得dp过程更加简洁,在dp数组的最边又加了一位1,当作哨兵,就不用单独处理s[1]这个位置时的dp[i-2]了。这样加了哨兵之后,s与dp之间错了一位,要注意。通过此题知道

2020-09-15 09:35:26 134

原创 leetcode专题训练 90. Subsets II

这道题是第78题的升级版,78题中所给数组的元素都是不相同的,所以直接回溯搞一发,每个元素都加或不加搞一发即可。然而这道题中元素可能是相同的,所以不能直接每个元素加或不加来搞。比如样例中的[1, 2, 2],只加前面的那个2和只加后面那个2的结果是重复的,所以需要对相同的数进行判断。在78题中,一个长为l的数组,子集list的第一个元素可以是数组中的每一个元素,第二个元素就是第一个元素的索引之后的数组中的每一个元素,以此类推。解法如下:class Solution: def subsets(se

2020-09-14 21:38:58 160

转载 概率统计、数值优化算法

一、概率统计:样本空间:一个随机试验(或随机事件)所有可能结果的集合样本点:随机试验中的每个可能结果随机变量:本质上是一个实值函数映射,即为每一个实验的结果映射为一个数值。注意区别“随机变量”的定义与“随机变量取值的概率”的定义.Eg:在抛一枚均匀的硬币过程中,将正面映射为1,反面映射为0,则随机变量X的定义为X(正面)=1,X(反面)=0。此时,随机变量取值的概率定义为P(X(正面)=1)=P(X(反面)=0)=0.5。很显然,随机变量X的定义时存在一个映射,随机变量取值的概率定义时又存在一个

2020-09-07 00:40:39 590

空空如也

空空如也

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

TA关注的人

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