自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

shahuzi的博客

记录科研的点滴

  • 博客(26)
  • 资源 (4)
  • 收藏
  • 关注

原创 【tensorboard+T-SNE】对数据进行降维可视化

tensorboard自带降维可视化的功能,在tensorboard的PROJECTOR栏中,如图所示。上图是tensorbaord-PROJECTOR栏的概览,左侧有一些选项,中间是数据点,话不多说,上代码。概述使用tensorboard进行降维的主要步骤如下:1.生成数据,格式是[num_of_samples,num_of_dimensions]2.生成元数据用于描述每个数据点(...

2020-01-09 19:54:29 3695

原创 正则表达式匹配

这道题是leetcode第10题,原题如下:此处记录下此题的解法,同时,新增一个匹配项+,在正则表达式中,+的匹配规则为:‘+’: 匹配单个或任意多个前面的那一个元素'.'的匹配首先,最简单的是.的匹配,对于点来说,它匹配任意单个字符,即如果模式串中的字符是.,那么它可以匹配任意字符;若模式串中的字符是ch,那么它只能匹配字符串中对应的ch。代码如下:def isMatch(tex...

2019-08-31 17:05:08 452

原创 大顶堆 小顶堆 堆排序

基础知识大顶(根)堆与小顶(根)堆都是一种数据结构,它们都是完全二叉树,但是不是用指针链表形式的二叉树,而是使用顺序存储的数组存储元素值。大顶堆及堆顶元素为整个堆中的最大值,小顶堆同理,它可以在O(1)时间内获取最大值。下面以大顶堆讲解一些堆的相关知识,并给出大、小顶堆的代码。首先,既然是顺序存储,且又是完全二叉树的结构,其节点如何存储呢?此处使用二叉树的层次遍历方式存储节点值,本文使用的节点...

2019-08-30 19:38:38 571

原创 【图算法】 Dijkstra算法与Floyd算法

Dijkstra算法与Floyd算法分别用于求单源最短路径与多源最短路径,其中Dijkstra算法要求图中所有边的权值为正,而Floyd算法只要求不存在负权环就行(即可以存在负权的边,但是若有环,环的权值和不能为负)。本文在给出这两个算法的求解代码的同时,给出各自求解路径的代码。Dijkstra算法Dijkstra算法是一个贪心算法,其思想是,设置一个从源点到顶点最短距离已知的点的集合S,然...

2019-08-29 10:55:37 292

原创 栈相关的题目 【栈的反转,栈的排序】

栈的反转实现栈的逆序,但是只能使用递归函数和栈本身的pop操作。解法:首先定义一个get方法,该方法用于将栈底的元素取出并返回。然后定义reverseStack方法,在该方法中,首先取出栈底元素,然后对移除栈底元素的栈递归调用reverseStack方法,直到栈为空,返回。返回后,将取出的栈底元素一次入栈,这样的话,最后一次取出的栈底元素(实际的栈顶元素)就落在了栈底,从而实现了栈的逆序...

2019-08-19 16:20:27 247

原创 顺时针转圈打印数组

所谓顺时针转圈打印数字,即从外往内打印数组,一圈一圈地打印,这是剑指offer的第20题。这个题的思路是这样的:首先,打印的条件是rows>2*start and cols>2*start,然后把打印一圈分为四步首先从左到右打印一行,这一步是任意情况都要执行的,即使只要1行1列;然后从上到下打印一列,这一步的条件是至少有两行;再执行从右到左打印一行,这一步的条件是至少有两...

2019-07-31 09:11:00 822

原创 荷兰国旗问题

原始的荷兰国旗问题是:有n个三种颜色的小球,颜色分别为红、白、蓝,要求将这n个小球排序,使得白色在中间,红色在前面,蓝色在后面,且时间复杂度只能是O(N)O(N)O(N),空间复杂度为O(1)O(1)O(1)。由此衍生的问题是:给定一个数组nums和一个目标值target(这个target一定在数组中),要求使得这个数组中小于目标值的元素在左边,等于目标值的元素在中间,大于目标值的元素...

2019-07-30 22:43:39 129

原创 旋转数组(顺时针90度,180度,270度)

旋转数组(90∘^{\circ}∘,180∘^{\circ}∘,270∘^{\circ}∘)顺时针旋转90∘^{\circ}∘第一种是用坐标变换法,在网上看到的一种坐标变换:顺时针90∘^{\circ}∘: newArr[i][j]=arr[N-1-j][i]顺时针180∘^{\circ}∘:newArr[i][j]=arr[N-1-i][N-1-j]顺时针270∘^{\circ...

2019-07-30 22:15:11 7376 1

原创 反转链表系列题

1.反转链表反转链表有两种做法:迭代法和递归法,这里两种都写一下1.1 迭代法定义三个指针pPrev,pNode,pNext,分别指向当前节点的前一节点、当前节点、当前节点的后一节点,只要当前节点不为空,就不断地将当前节点的next指向前一节点,然后更新当前节点为下一节点,最后返回pPrev,因为退出条件为当前节点为空节点,故此时pPrev为最后一个节点。(PS:这个代码的前后相连真的是美)...

2019-07-24 17:54:08 200

原创 EM算法的导出、收敛性证明

首先,把使用的符号声明一下。Y:观测变量各分量iid,即P(Y)=P(y1,y2,...,yN)=∏i=1NP(yi)Y:观测变量 \quad 各分量iid,即P(Y)=P(y_1,y_2,...,y_N)=\prod_{i=1}^{N}P(y_i)Y:观测变量各分量iid,即P(Y)=P(y1​,y2​,...,yN​)=∏i=1N​P(yi​)Z:隐变量Z:隐变量Z:隐变量Θ:参数\Th...

2019-07-19 18:15:26 998

原创 数组中的逆序对

此题来源于剑指offer题目描述:在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。从直观上来看,可以使用一个O(N2)O(N^2)O(N2)的算法:顺序扫描整个数组,每扫描到一个数字时,逐个比较它与它后面数字的大小,从而获得逆序对数。剑指offer上介绍了一种O(NlogN)O(NlogN)O(NlogN)的方法...

2019-07-16 20:52:40 340

原创 编辑距离系列题

编辑距离的概念此处不再概述,下面开始说和编辑距离相关的一系列题目,主要包括:普通的编辑距离要求记录操作各操作的数目只有删除操作的编辑距离不同操作代价不同的编辑距离1.编辑距离思路:使用动态规划,dp[i][j]表示word1[0...i]变成word2[0...j]的最短距离,举个栗子,假设word1=horse,word2=ros,构造以下dp矩阵。’ ’...

2019-07-15 21:06:03 291

原创 最长公共子序列

题目:最长公共子序列(子串) ---- LCS解法:动态规划思路:设dp[i][j]为以第一个字符串的前i个,第二个字符串的前j个字符构成的最长公共子串,设这两个字符串分别为A和B,则当A[i]==B[j]时,dp[i][j]=dp[i-1][j-1]+1;若A[i]!=B[j],则dp[i][j]=max(dp[i-1][j],dp[i][j-1])代码def LCS(A,B): ...

2019-07-10 10:21:05 1255

原创 最长上升子序列【动态规划,二分查找】

题目描述给定一个无序的整数数组,找到其中最长上升子序列的长度。输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。解法一 动态规划思路:dp[i]表示直到第i个元素的最长上升子序列的长度,初始条件dp[i]=1。 dp[i]如何更新呢?若第i个值大于其前面某一个元素(假设索引为j),那么dp[i]=dp...

2019-07-09 14:53:32 6915

原创 VIVO校招提前批算法工程师笔试题目 2019/6/4

总共有三道题:很简单的一道题,给A,B两个数组,输出出现在A中而没有出现在B中的元素,遍历一遍就OK了。反正链表的第M个至第N个元素0-1 背包先占坑,后面来填坑。...

2019-06-04 20:41:12 1831

原创 tensorflow对sklearn中PCA的影响

最近在写论文,需要重新做一下之前的实验以确定结果无误。论文对比了基于传统的PCA+LDA+SVM的方法和基于CNN的方法。重新实验的是传统方法,之前分类准确率在70%-80%左右,但是在这次复现时发现稳定10%,一看预测结果全是某一个类别,我用脚趾头猜也知道是出错了,期间查了两天。第一天,考虑是不是PCA的随机性问题,所以写了个程序,跑了250000次,成功跑满了24小时,结果没什么差别,大...

2019-01-06 21:58:56 779

原创 Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift 论文阅读报告

摘要神经网络训练过程是非常复杂的,这是因为随着训练的进行、前置层的参数的改变,导致每一层的输入分布在不断改变。这种现象使得我们需要使用更小的学习率和更仔细的进行权值初始化,而这又导致网络训练速度变慢,且使得在非线性饱和区内模型变得很难训练。作者把这种现象叫做内部协变量偏移(internal covariate shift),作者通过正规化输入的方法解决了这个问题。这种正规化是在每个batch里...

2018-12-16 17:02:19 185

原创 markdownpad2 行内公式

最近使用markdownpad做工作整理,发现markdownpad的行内公式无法显示,后来google发现了方法,记录如下:一般的markdown行间公式如下:$ 此处写公式内容$效果如下:此处写公式内容此处写公式内容此处写公式内容在markdownpad中,需要改一下:\\(此处写公式内容\\)注意括号不能少。...

2018-12-12 16:54:17 2991 2

原创 相位展开(phase unwrapping)

我在做科研项目时,遇到过使用相位信息,但是相位被折叠(wrapped)的情况,相位计算公式如下:Θ=arctan(ba)\Theta = arctan(\frac{b}{a})Θ=arctan(ab​)其中b、a分别代表虚部和实部,由于反正切函数的区间是(−π2,π2)(-\frac{\pi}{2},\frac{\pi}{2})(−2π​,2π​),故实际计算相位时会将结果折叠在这个区间内。...

2018-10-13 14:17:19 32312 14

转载 representation learning 表示学习

representation learningReview1 WHAT2 WHY3 WHAT MAKES A REPRESENTATION GOODword embedding1 Hinton 1986Distributed representation2 Bengio 2003NNLM...

2018-09-17 21:07:19 1587

原创 tensorflow进行fine-tune

进行fine-tune的关键在于保存数据和重新读取数据,在tensorflow中有多种方法,下面介绍一种空间复杂度较低的方法。 首先,在训练阶段saver = tf.train.Saver(var_list=tf.trainable_variables()) #只保存可训练变量with tf.Session() as sess: sess.run(tf.global_variab...

2018-07-31 12:47:24 1785

原创 【由浅入深】例解python装饰器执行顺序

一直以来只是单纯地使用装饰器,并没有深究过其执行过程,或者说之前没有死磕,这两天重拾python的基础学习,在这一块儿花了点功夫,把此时的理解记下。 仔细观察装饰器的结构,无非是在一个函数内部定义了另外一个函数,因此,先来说明这种内嵌函数的执行(调用)过程。例1.内嵌函数例子def foo(): def bar(): print('bar() called').........

2018-07-27 21:31:27 8568 18

原创 tensorboard多个events文件显示紊乱的解决办法

在使用tensorboard可视化网络参数时,当因多次训练产生多个events文件后,在tensorboard上显示会非常混乱,非常不易于观察。如下图所示,这张图只有两次实验的文件,已经比较混乱了。 我之前的解决办法是每次跑都将以前的文件删除,保证路径下只有当前产生的events文件,但这样比较繁琐,特别是当需要调的参数变多的时候,每次删除不但很累,而且容易出错,后来受这篇文章的启发,既然保...

2018-07-26 17:21:54 22601 18

原创 tensorboard同时显示训练曲线和测试曲线

在做网络训练实验时,有时需要同时将训练曲线和测试曲线一起显示,便于观察网络训练效果。经过很多次踩坑后,终于解决了。 具体的方法是:设置两个writer,一个用于写训练的数据,一个用于写测试数据,并且这两个writer分别存在train和test路径中,注意测试的writer不能加sess.graph如下代码所示。...train_log_dir = 'logs/train/'test...

2018-07-26 16:55:36 14062 3

原创 python学习之传递函数

在Python中,函数也是对象。所以函数是可以被引用的,也可以作为参数传入函数(想想装饰器),话不多说,上例子。(例子来源于《python核心编程第二版》) 例1.使用别名调用def foo(): print('in foo()')bar = foo # 对函数对象新建一个引用>>>bar()in foo()在上述代码中,把foo赋值给ba...

2018-07-25 22:54:26 13180

原创 批输入任务中,数据长度无法整除batch_size的处理方法

在神经网络训练时,常常需要采用批输入数据的方法,为此需要设定每次输入的批数据大小batch_size,而当样本数量无法整除batch_size时,往往会丢弃掉后面的若干个样本。在实际做项目时,我曾经这么做过,对于样本数目多的数据集,这样做影响不大,但是当数据集太小时,多余的那些样本就无法用于学习更新网络,对本来就缺少数据的任务来说这样做有些不合理,如例1所示。 例1.直接丢弃后面的样本def...

2018-07-25 21:23:36 11305 1

USTC-数字图像处理-水平集演化方程

此文件是USTC的数字图像分析第一次作业,由本人手打,推导CVPR2005的一篇关于水平集的论文中的演化方程,此文件只推导后两项,第一项类似可以推出。

2018-04-13

MSP430实现二相步进的电机的正反转程序

本文档实现了MSP430对步进电机的正反转控制,其中TurnMotorAngle函数通过给定要转过的角度和转动方向(1正转,0反转)实现了对步进电机的自由控制。部分I/O可根据实际情况进行更改。

2016-07-07

51寄存器表

51单片机的各寄存器配置表,和串口通信各种波特率配置值。

2015-04-23

数学建模—层次分析法论文

数学建模层次分析法论文23篇,建模用资料,值得珍藏。

2014-09-27

空空如也

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

TA关注的人

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