自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数字图像基础知识

颜色空间 (RGB, HSV(HSB), HSL)

2023-03-14 23:20:03 127 1

原创 理解VAE

理解VAEVAE可以分成两部分:encoder 和 decoder相比于AE:VAE名字里面多了一个V, 是 variantional, 变分。VAE里面使用了变分推断的技术,是为了近似求解p(z∣x)p(z|x)p(z∣x)从输出的结果上看,AE的encoder输出的是一个固定的向量(编码),而VAE的encoder输出的是空间中的一个条件概率分布q(z∣x)q(z|x)q(z∣x) 。 q(z∣x)q(z|x)q(z∣x)的均值μ\muμ就相当于之前AE的输出从encoder和decode

2021-05-06 14:13:39 1568

原创 GMM算法的实现

文章目录ML实验1:GMM算法的实现程序结构main.pyGMM.pyDataReader.py经验教训ⅠⅡⅢⅣ附录:理论基础ML实验1:GMM算法的实现程序结构main.pyimport osfrom numpy import testingimport numpy as npimport DataReader, GMMimport matplotlib.pyplot as pltfrom matplotlib import animationdef main(): #

2021-03-22 21:14:04 1771 1

转载 C++ delete 和 delete []的区别

转载

2020-05-12 17:13:57 141

原创 构造函数,复制构造函数和析构函数

这些函数在网上很容易就可以查到定义和写法,这里就不赘述了。令人感兴趣的是这些函数什么时候执行, 特别是复制构造函数和析构函数。用编写的一段(很丑的)代码来说明。#include<iostream>#include<cstdio>#include<cmath>class Point{private: /* data */ double x, y ; friend Point& __doa(Point *ths, const Point&amp

2020-05-12 15:22:55 299

原创 使用 new 申请动态内存

new 语句比 malloc 语句对程序员更加友好。 写法上,更加简洁, 也更加好懂。以矩阵运算为例。 当我们需要创建一个矩阵的时候, 可以使用二级指针, 在内存中申请一块空间。mat = new int*[row_len] ; for(int i=0 ; i<row_len ; i++){ mat[i] = new int [col_len] ; }观察上面的代码:首先给二级指针mat申请内存。 申请了长度为row_len的内存,类型是一级指针。然后给每个一级指针申请动态内

2020-05-11 19:08:00 1860

原创 c++中引用的使用

写矩阵运算的程序的时候,需要用到二级指针。void get_memory(int **&mat){ mat = new int*[row_len] ; for(int i=0 ; i<row_len ; i++){ mat[i] = new int [col_len] ; }}利用 new 语句申请动态内存。其中int **&mat的写法很让人在意。 从字面上看(从右向左看),这应该是“引用的二级指针”。 但是一般的解释说这是二级指针的引用。从意义上来说

2020-05-11 19:00:19 125

原创 Python时间相关函数和时间转换

遇到一题和时间计算有关。Write a Python program to calculate number of days between two dates.Sample dates : (2014, 7, 2), (2014, 7, 11)Expected output : 9 days我使用了time 库解决问题。首先是规定读入数据的格式为year-month-day. ...

2020-03-20 15:21:23 164

原创 理解python中的赋值语句

python中的赋值语句存在两种有关的类型: entity 和 name.赋值语句也可能有两种形式:name = entityname1 = name2被我们创建的entity保存在内存中。 而语句name = entity则是将name 绑定在entity 上。 意味着可以使用name 访问 entity, 对其进行操作。观察下面的一段代码:a = [1,2,3]b = ac...

2020-03-18 20:10:22 555

原创 统一多行缩进

经常会碰到代码段复制粘贴之后缩进被破坏的情况, 以前都是手动一行一行调整(枯了)。 幸好学会了多行缩进的方法。选中要缩进的行:tab 缩进tab+shift 取消缩进也可以使用:Ctrl + [ 缩进Ctrl + ] 取消缩进...

2020-03-18 20:09:46 9743 1

原创 排序函数的使用

常见的排序方法sort(ls) sorted(ls)ls.sort()sort 返回一个排好序的新列表。 需要赋值语句。sorted 直接将参数列表排好序。 不需要赋值语句。ls.sort() 是列表的方法。 不需要赋值语句排序中的参数排序方法中有两个可选参数: key, reverse通常使用key = lambda x : () 的形式设置排序的关键字。在元组中, ...

2020-03-18 20:09:03 678

原创 Numpy, Scipy, Matplotlib基本用法

学习内容来自:Numpy Tutorial文章目录Array SlicingArray IndexingMathematical ManipulationBroadcastingImage Processing基本的用法课程里面说的挺详细了。 特别记录一些需要关注的点。Array Slicing使用固定数字进行array寻址会导致数组降维。y = np.random.random((3,...

2020-03-18 20:08:35 179

原创 Linear Regression

Linear Regression 是最简单的regression model.Model Description数据集中包含了很多形如 (x,y)(x, y)(x,y) 的数据对, 大小为 mmm 。 第 iii 个数据对记作 (x(i),y(i))(x^{(i)}, y^{(i)})(x(i),y(i)). 其中 x=(x0,x2,⋯ ,xn)x = (x_0, x_2, \dotsb, ...

2020-03-18 19:52:26 109

原创 递归方程求解法

递归方程求解法特征方程求解特征方程法本质上是先猜后证的方法。我们猜测方程的解得形式为 xnx^nxn ,然后带入递归式,求解 xxx。k阶齐次线性常系数给出的条件有递归关系和初始解:{f(n)=a1f(n−1)+a2f(n−2)+⋯+akf(n−k)f(i)=bi,0≤i≤k−1\begin{cases} \quad f(n) = a_1f(n-1) + a_2f(n-2) + \d...

2019-07-03 12:13:21 2752

原创 中缀,后缀,前缀表达式转换和求值

中缀,后缀,前缀表达式转换和求值平常我们阅读使用的都是中缀表达式,但是计算机并不能识别,需要转成前缀或后缀表达式计算机才能进行计算(转化时还能去掉括号)。整个过程分为两部分:表达式转换,求值。表达式转换。一般的表达式中常见的运算: +,−,×,/+,-,\times,/+,−,×,/特殊的符号: ( ,)( \ ,\quad )( ,)特殊运算符: ∧\wedge∧ ...

2019-06-15 15:46:58 500

原创 树的一般知识

文章目录树的一般知识二叉树非递归遍历森林和树的转换构造Huffman树树的一般知识二叉树非递归遍历preorder最开始将根节点放进栈里。然后拿出来,按照先进后出的原则,先放右儿子,再放左儿子。对着两个点也如此操作。直到整棵树的节点被访问过。伪代码:void Preorder (struct node * t) { Inistack(s); ...

2019-06-08 09:49:22 600

原创 主席树

主席树主席树本体:一棵线段树需要注意的是,主席树节点编号方式和普通线段树不同:主席树按照DFS顺序编号。节点信息:有左右儿子节点的编号,还有该节点代表的离散化区间中出现的数的个数。静态主席树的基本思想是把原来的n棵线段树合并成一棵,因为每次新加进来一个数,总是只修改一条链上的值,没有必要新建一棵线段树。我们只需要在原来的节点后面增加lognlognlogn个节点就能保留新增的信息,原来的节...

2019-04-23 20:47:28 452

原创 线段树(写法剖析和一些细节)

线段树(写法剖析和一些细节)#include<bits/stdc++.h>#define lson root<<1#define rson root<<1|1typedef long long LL ; using namespace std;const int MAXN = 1e5+1 ;struct SgT{ int l, r ; ...

2019-04-22 19:45:35 178

原创 浅析KMP算法

浅析KMP算法前言和导引今天数据结构课学了字符串的相关内容,其中着重介绍了KMP算法。KMP是一种非常好用的字符串匹配算法。对于给定的长度为mmm的字符串s(String)s(String)s(String),和需要匹配的长度为nnn的模式串p(Pattern)p(Pattern)p(Pattern),KMP能够实现O(m+n)O(m+n)O(m+n)时间复杂度级别的匹配。相比于传统的O(m...

2019-03-18 20:24:56 228

原创 二叉搜索树Binary Search Tree (BST)

二叉搜索树Binary Search Tree (BST)今天数据结构学习了BST。BST是基于二叉树创建的一种数据结构,也叫二叉查找树。其他很多的数据结构,如AVL树,Splay树等,都是基于BST的升级版本。对BST拥有全面的理解,是学好更高级别的查找树的基础。功能:用来查找特定的元素是否存在。 操作:对于特定的元素,可以有查询,插入,删除等操作。对于整棵BST,可以查找最大、最小值。...

2019-03-04 21:01:30 298

原创 Partition函数实现的快速排序和寻找第k大数

Partition函数实现的快速排序和寻找第k大数快速排序的核心内容其实就是Partition函数,以前一直没有什么深入的理解,也只是背一下快排的代码,再后来干脆直接用sort了。但是了解Partition函数对于理解快排非常重要,还可以实现别的应用。Partition函数的功能:对于一个你选定的数,将小于这个数的元素放置到数组的一边,大于这个数的元素放置到数组的另一边,最后你可以知道这个选定...

2019-03-03 15:26:16 933

原创 洛谷P2123 皇后游戏

洛谷P2123 皇后游戏# include &amp;amp;amp;amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;amp;amp;amp;gt;using namespace std ;typedef long long LL ;struct node { int a,b ;}per[20010];bool cmp( const node &amp;amp;amp;amp;amp;amp;amp;x ,

2019-01-18 20:27:42 209

空空如也

空空如也

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

TA关注的人

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