自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 将Hexo博客同步部署到阿里云服务器

title: 将Hexo博客同步部署到阿里云服务器date: 2021-05-25 23:16:52tags: 工作记录将Hexo博客同步部署到阿里云服务器文章目录title: 将Hexo博客同步部署到阿里云服务器date: 2021-05-25 23:16:52tags: 工作记录将Hexo博客同步部署到阿里云服务器服务器端设置安装git与nginx创建git仓库并使用hooks实现自动部署修改nginx默认打开界面阿里云服务器更改配置本地设置参考链接前两天闲来无事,买了个阿里云服务器玩玩.

2021-05-25 23:52:42 248

原创 使用Pytorch进行多GPU训练数据

今天尝试使用多显卡训练PyTorch代码。不过训练时报错,查找代码发现此前曾设定单一GPU训练,如下。将其注释掉,再次运行,又发现报错。查找资料发现训练模型所使用的显卡必须要包括主卡,而我在设置训练GPU时,默认0卡为主卡,但却没有使用,所以会报错。gpu_ids = '1, 2'如果要将其他卡设置为主卡,例如我们这里将卡1设为主卡,卡2并行训练,则需要在训练脚本中添加如下代码,表明让程序可视卡1、卡2。此时实际显卡编号“1, 2”的索引分别为“0, 1”,所以我们需要更改gpu_ids=

2021-04-06 08:52:39 310

原创 算法复杂度分析

复杂度分析为什么需要复杂度分析如果单纯的把代码跑一边,通过统计、监控的方式得到算法执行的时间和占用的内存大小,这种方法通常叫做事后统计法。事后统计法的局限性在于测试结果非常依赖测试环境;测试结果受数据规模的影响很大;我们需要一个不用具体的测试数据来测试,就可以粗略地估计算法的执行效率的方法。大 O 复杂度表示法所有代码的执行时间 T(n) 与每行代码的执行次数 f(n) 成正比,n表示数据规模,公式中的O表示代码的执行时间T(n)与f(n)表达式成正比。大 O 时间复杂度实际上并不具体

2021-03-08 21:26:31 144

原创 h5py与scipy.io读取mat文件

前言使用Python处理mat数据时会出现不同的matlab版本会导致读取方式不同。主要是h5py与sicpy.io.loadmat的区别,而且h5py可能会出现线程占用资源的问题。通常可以使用两种方式读取***.mat文件,分别是import h5pyimg = h5py.File(path, 'r')import scipy.io as sioimg = sio.loadmat(path)sio.loadmat问题当使用sio.loadmat读取v7.3版本的matlab保存的m

2020-12-17 21:14:42 1010

原创 Python Numpy中的reshape与transpose的用法以及区别

Python Numpy中的reshape与transpose的用法以及区别# 系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就

2020-11-04 15:22:35 1669

原创 使人疲惫的不是远方的高山,而是你鞋子里的一粒沙子

今天上班途中听到一个概念——“慢性日常麻烦”,描述的时我们日常生活中那些看似不起眼,但又时常困扰我们的小事情。通常击垮我们的往往不是什么惊天动地的大事情,而是一些微不足道的小事情。伏尔泰有句话:”使人疲惫的不是远方的高山,而是你鞋子里的一粒沙子“。听到这里很受感触,有些社会经历后就偶尔会回忆过去,回忆的可能不是曾经的人或地点,而是”鲜衣怒马少年时,一日看尽长安花 “的心态吧,以前总觉得自己可以永远愤怒,永远年轻,永远热泪盈眶。可是哪里会有人永远愤怒,永远年轻呢,我们受困于工作生活中鸡毛蒜皮的小事,在这些小

2020-11-04 00:01:29 860

原创 Leetcode 105. 从前序与中序遍历序列构造二叉树

题目根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。思路对于任意一棵树而言,前序遍历的形式:[根节点,[左子树的前序遍历],[右子树的前序遍历]];中序遍历的形式:[[左子树的中序遍历],根节点,[右子树的中序遍历]];前序遍历和中序遍历的长度相同,所以可以根据前序遍历定位根节点,根据中序遍历的根节点索引找到根节点左子树的长度,从而可以定位前序遍历的左子树与右子树的分界点。这样我们可以递归的构造出左右子树,再将这两棵子树接到根节点左右。使用哈希映射帮助快速定

2020-11-03 22:42:00 58

原创 Leetcode 236. 二叉树的最近公共祖先

题目给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”递归解法最近公共祖先的定义: 设节点root为节点 p,q的某公共祖先,若其左子节点 root.left和右子节点 root.right都不是 p,q的公共祖先,则称root是“最近的公共祖先” 。根据以上定义:若root满足最近的公共祖先,则p、q

2020-11-03 22:41:08 102 1

原创 Leetcode 二叉树的最大深度与最小深度

104. 二叉树的最大深度题目给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。递归class Solution: def maxDepth(self, root: TreeNode) -> int: if root is None: return 0 return 1+max(self.maxDepth(root.left), self.maxDep

2020-11-03 22:40:08 323

原创 Leetcode 22. 括号生成

题目数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。例子输入:n = 3输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ]深度优先遍历做加法有效的括号组合一定要左右括号数为n时,加入到队列中;产生左分支的时候,只看当前是否还有左括号可以使用;产生右分支时,剩余右括号数一定要小于左括号数。class So

2020-11-03 22:39:21 56

原创 Leetcode 226. 翻转二叉树

题目翻转一棵二叉树。递归(深度优先遍历)翻转当前节点的左右子树。首先从叶子节点开始翻转,当遍历到当前节点的左右子树的子节点都已经完成翻转,那么可以直接交换左右子树的位置,直到根节点的左右子树也翻转完成。# 时间复杂度:O(N)# 空间复杂度:O(N)class Solution: def invertTree(self, root: TreeNode) -> TreeNode: if root: self.invertTree(root.le

2020-11-03 22:38:26 87

原创 Leetcode 98. 验证二叉搜索树

题目给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。递归二叉搜索树的特性:该二叉树的左子树不为空,则左子树上的所有节点均小于根节点的值;若二叉树的右子树不为空,则右子树的所有节点均大于根节点的值。可以通过递归的方式递归判断。# 时间复杂度:O(N)# 空间复杂度:O(N)class Solution: def isValidBST(

2020-11-03 22:37:08 80

原创 Learning Texture Transformer Network for Image Super-Resolution论文解读-参考图像超分重建

最近阅读了一篇参考图像超分重建的论文,这是微软研究院在CVPR2020的一篇论文,主要讨论了借助参考图像完成超分重建的任务。通过学习参考图像的纹理特征,从而恢复低分辨率图像的纹理信息,实现图像超分重建的任务。Intruction图像超分重建的目的是从低分辨率图像恢复高分辨率图像所对应的自然以及真实的纹理。近年来,图像超分在众多领域有所应用。相关研究通常两个方面进行,包括单图超分重建(SISR)、基于参考的图像超分重建(RefSR)。而SISR本身受限于高分辨率纹理在退化过程中被过度破坏而无法恢复,所以可

2020-10-26 22:39:26 1395

转载 scatter_()函数的详细介绍

一、函数介绍scatter_(input, dim, index, src):将src中数据根据index中的索引按照dim的方向填进input。可以理解成放置元素或者修改元素dim:沿着哪个维度进行索引index:用来 scatter 的元素索引src:用来 scatter 的源元素,可以是一个标量或一个张量二、实现原理x = torch.rand(2, 5) #tensor([[0.1940, 0.3340, 0.8184, 0.4269, 0.5945],# [0.20

2020-10-10 17:53:59 2038

原创 参考《Learning Efficient Convolutional Networks through Network Slimming》进行模型剪枝探讨

有关于模型剪枝最近工作需要对于原有模型进行优化加速,此前尝试使用MobileNet,但发现Pytorch对其优化不理想,分组卷积并没有真正有效地提高模型效率。又尝试使用Octave Convolution,作者提到Octave Conv模块可以将特征图分为低频和高频,分别存储信息和特征,认为可以对低频信息减半,最终达到加速卷积运算效果。贡献:将卷积特征图分成了两组,一组低频,一组高频,低频...

2020-03-31 11:02:51 401

原创 Pytorch在测试与训练过程中的验证结果不一致问题

引言今天在使用Pytorch导入此前保存的模型进行测试,在过程中发现输出的结果与验证结果差距甚大,经过排查后发现是forward与eval()顺序问题。现象此前的错误代码是 input_cpu = torch.ones((1, 2, 160, 160)) target_cpu =torch.ones((1, 2, 160, 160)) target_gpu, inpu...

2019-11-18 17:59:08 4786

原创 《SinGAN: Learning a Generative Model from a Single Natural Image》解读

时间

2019-11-17 12:06:30 579

原创 pthread多线程计时函数(C++)

前言在使用多线程开发过程中,发现无论怎么修改,多线程的效率提升都不是很明显,经过多次排查发现是计时函数的应用出现了问题。此前使用clock()计时,最终改为timeval函数,得到正确的运行时间。记录下不同的计时函数的特点。clock()clock()函数为最常用的计时函数,返回end与begin之间的CPU时钟计时单元数(clock tick),当进行单线程或者单核心运行时,可以使用clo...

2019-11-03 11:54:35 3820

原创 GPU高性能编程CUDA实战(一)CUDA介绍

CPU在早期,为了提升计算设备的性能,通常手段就是提高中央处理器(CPU)的时钟频率,但随着功耗与发热的急剧提升以及晶体管的大小已经接近极限。此后,又通过提高中央处理器的核心数量来提升整体的计算机性能。GPU相比于CPU需要很强的通用性处理各种不同的数据类型,同时逻辑判断又需要引入大量的分支跳转和中断的处理,这些都使得CPU的内部结构异常复杂。而GPU面对的则是类型高度统一,相互无依赖的大规...

2019-10-29 22:24:44 364

空空如也

空空如也

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

TA关注的人

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