
算法
人生的起起落落,生活的悲喜无常,在这个波涛汹涌的社会中,没有谁能把日子过得风平浪静
理会拾光
这个作者很懒,什么都没留下…
展开
-
深度学习中7种最优化算法的可视化与理解
本文旨在优化一维函数,实际上模型参数有数百万维以上,差距很大,因此本文最好作为辅助法的理解,而非对算法优劣的判断依据。在深度学习中,有很多种优化算法,这些算法需要在极高维度(通常参数有数百万个以上)也即数百万维的空间进行梯度下降,从最开始的初始点开始,寻找最优化的参数,通常这一过程可能会遇到多种的情况,诸如:1、提前遇到局部最小值从而卡住,再也找不到全局最小值了。2、遇到极为平坦的地方:“平原”,在这里梯度极小,经过多次迭代也无法离开。同理,鞍点也是一样的,在鞍点处,各方向的梯度极小,尽管沿着某一个.原创 2020-08-07 09:26:01 · 566 阅读 · 0 评论 -
换人,这些算法都不会还学什么操作系统
此篇文章带你梳理一下操作系统中都出现过哪些算法进程和线程管理中的算法进程和线程在调度时候出现过很多算法,这些算法的设计背景是当一个计算机是多道程序设计系统时,会频繁的有很多进程或者线程来同时竞争 CPU 时间片。那么如何选择合适的进程/线程运行是一项艺术。当两个或两个以上的进程/线程处于就绪状态时,就会发生这种情况。如果只有一个 CPU 可用,那么必须选择接下来哪个进程/线程可以运行。操作系统中有一个叫做 调度程序(scheduler) 的角色存在,它就是做这件事儿的,调度程序使用的算法叫做 调度算法原创 2020-07-31 09:52:05 · 281 阅读 · 0 评论 -
经典排序算法---插入排序
一般来说,插入排序采用in-place在数组上实现。具体算法描述如下:1、从第一个元素开始,该元素可以认为已经被排序。2、取出下一个元素,在已经排序的元素序列中从后向前扫描。3、如果该元素(已排序)大于新元素,则将该元素移到下一位置。4、重复步骤3,直到找到已排序的元素小于或者等于新元素的位置。5、将新元素插入到该位置中。6、重复步骤2图片演示操作如下:如果目标是把n个元素的序列升序排列,那么采用插入排序存在最好和最坏情况。最好情况就是:序列已经是升序排列了,在这种情况下,需要进行n-1次比原创 2020-07-16 15:29:32 · 446 阅读 · 0 评论 -
经典排序算法---选择排序
选择排序是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,放到排序序列末尾。以此类推,直到所有的元素均排序完毕。选择排序的交换操作介于0和(n-1)次之间;选择排序的比较操作为n(n-1)/2次之间;选择排序的赋值操作介于0和3(n-1)次之间;其平均复杂度为O(n2)。代码如下:public class SelectSort { public static void main(String[] args原创 2020-07-16 15:26:38 · 154 阅读 · 0 评论 -
经典排序算法---冒泡排序
public class Test { public static void bubbleSort(int[] source){ for(int i=source.length-1;i>0;i--){ for(int j=0;j<i;j++){ if(source[j]>source[j+1]){ swap(source,j,j+1); } } } } private static void swap(int[] source, int原创 2020-07-16 15:19:24 · 128 阅读 · 0 评论