- 博客(13)
- 收藏
- 关注
原创 GPU状态监测 nvidia-smi 命令详解
在进行深度学习实验时,GPU 的实时状态监测十分有必要。今天详细解读一下 nvidia-smi 命令。上图是服务器上 GeForce GTX 1080 Ti 的信息,下面一一解读参数。 上面的表格中的红框中的信息与下面的四个框的信息是一一对应的:GPU:GPU 编号; Name:GPU 型号; Persistence-M:持续模式的状态。持续模式虽然耗能大,但是在新的GPU应用启动时,花费的时
2018-02-01 16:43:13 77940 4
原创 整数除法的原理
资源来源于 LeetCode29 —— Divide Two Integers. 题目描述如下所示: 这道题让我们求两数相除,而且规定我们不能用乘法,除法和取余操作,比较直接的方法是用被除数一直减去除数,直到为0。这种方法有极端情况,比如除数为1,被除数接近 INT_MAX,则此时复杂度为 O(n)O(n). 除此之外,我们还可以用另一神器位操作 Bit Operation,思路是,如果被除数大于
2018-02-25 17:18:57 5584
原创 内排序算法之 —— 基数排序
基数排序是一种常见的算法,虽然在各个数据结构教材中都能看到,但在面试或笔试中却很少遇到,本篇博客简要讲解基数排序的算法原理和效率。基数排序不同于其他的排序算法,它不是基于比较的算法。基数排序是一种借助多关键字排序的思想对单逻辑关键字进行排序的方法。它是一种稳定的排序算法。多关键字排序中有两种方法:最高位优先法(MSD)和最低位优先法(LSD)。通常用于对数的排序选择的是最低位优先法,即先对最次位关键
2018-02-24 18:41:59 1117
原创 内排序算法之 —— 归并排序
归并排序的基本思想是:首先,将 R[0..n-1] 看成是 n 个长度为1的有序表,将相邻的有序表成对归并,得到n/2个长度为2的有序表;然后,再将这些有序表成对归并,得到n/4个长度为4的有序表,如此反复进行下去,最后得到一个长度为n的有序表。这里引用另一位博主的解析图: C++代码示例:void Merge(vector<int> R, int low, int mid, int high)
2018-02-24 17:25:53 403
原创 内排序算法之 —— 交换排序
交换排序的基本方法是:两两比较待排序元素的关键字,并交换不满足次序要求的那些偶对,直到全部满足为止。本次介绍冒泡排序和快速排序。冒泡排序冒泡排序的算法思想是:通过无序区中相邻元素关键字间的比较和位置的交换,使关键字最小的元素如气泡一般逐渐往上“漂浮”直至“水面”。整个算法是从最右边的元素开始,对每两个相邻元素的关键字进行比较,且使关键字较小的元素换至关键字较大的元素之上,使得经过一趟排序后,关键字最
2018-02-24 11:57:27 406
原创 内排序算法之 —— 选择排序
选择排序的基本方法是:每步从待排序的元素中选出关键字最小的元素,顺序放在已排序的元素序列的最后,直到全部排完为止。本次介绍简单选择排序和堆排序。简单选择排序简单选择排序的过程是:假设元素存放在 R[0..n−1]R[0..n-1] 之中,其中 R[0..i−1]R[0..i-1] 是有序区,R[i..n−1]R[i..n-1] 是无序区,且有序区的所有关键字均小于无序区的所有关键字。需将 R[i]R
2018-02-17 19:12:42 368
原创 深度优先搜索(DFS)解决括号排列问题
资源来源于 LeetCode22 —— Generate Parentheses。题目描述如下所示: 该问题是要将所有合法的括号排列打印出来。针对一个长度为 2n 的合法排列(n为左括号或者右括号的个数),第 1 到 2n 个位置都满足如下规则:左括号的个数大于等于右括号的个数。所以,我们就可以按照这个规则去打印括号:假设在位置 k 我们还剩余 leftNum 个左括号和 rightNum 个右
2018-02-08 17:14:23 894
原创 内排序算法之 —— 插入排序
这几天开始整理总结一下几个内排序算法。插入排序的基本思想是:每一趟将一个待排序的元素,按其关键字值的大小插入到已经排序的部分文件中的适当位置上,直到全部插入完成。本次介绍两种插入排序算法,即直接插入排序与希尔排序。直接插入排序直接插入排序是一种最简单的排序算法,其过程是依次将每个元素插入到一个有序的序列中去。假设元素放在 R[0…n-1] 之中,R[0…i-1] 是已排好序的元素区(简称有序区,初始
2018-02-07 17:12:02 843
原创 BP 神经网络中的基础算法之二 —— 梯度下降算法
在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法,关于最小二乘法,可参考笔者的上一篇博客 BP 神经网络中的基础算法之一 —— 最小二乘法。何为梯度?在微积分里面,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。比如函数 f(x,y)f(x,y), 分别对 x,y 求偏导
2018-02-06 21:03:10 2856
原创 BP 神经网络中的基础算法之一 —— 最小二乘法(LS 算法)
最小二乘法(LS 算法)是统计分析中最常用的逼近计算的一种算法,其交替计算结果使得最终结果尽可能地逼近真实结果。LS 算法是一种数学优化技术,也是一种机器学习常用算法。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和最小。最小二乘法还可用于曲线拟合,其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。若
2018-02-06 16:26:42 6949
原创 栈操作解决括号匹配问题
资源来源于 LeetCode 20 —— Valid Parentheses。题目描述如下所示: 题目意思简单明确,即判断所给的括号字符串是否合法。此题用栈的思想去解决再好不过了,首先将所有括号成对存储在 map 中,遍历字符串,只要栈不为空或者栈顶元素与指定字符不成对匹配,就将指定元素压栈,否则将栈顶元素出栈。一次遍历结束后,如果栈为空,则表示所给括号字符串已经全部匹配成功,即为合法字符串,否则
2018-02-05 20:22:00 533
原创 删除链表中倒数第n个节点(时间复杂度为O(n))
资源来源于 LeetCode 19 —— Remove Nth Node From End of List。题目描述如下所示: 题目意思很简单,简而言之就是删除链表中倒数第n个节点,需要注意的是(图中红框标出),只能遍历一次链表。还有一点,n一定是有效的,即n不会大于链表中的元素总数。我们首先要考虑的时,如何找到倒数第n个节点,由于只允许一次遍历,所以我们不能用一次完整的遍历来统计链表中元素的个数
2018-02-04 17:26:05 1027
原创 后台执行命令 nohup 以及强制结束进程命令 kill
通过终端远程操作服务器时,难免要使特定进程处于持续运行状态,例如深度学习训练网络参数,但又不可能长时间不间断操作终端,我们希望将进程保持后台持续运行,这里提供两个思路:(1)docker 内运行,退出但不终止程序;(2)nohup 命令与 & 结合。这里只讲第二个思路:nohup 命令与 & 结合。举个例子,我们需要保持 test.py 程序的持续运行(用于长时间训练神经网络),并且将控制台输出重定
2018-02-01 19:18:05 23504 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人