- 博客(22)
- 收藏
- 关注
原创 理解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
原创 构造函数,复制构造函数和析构函数
这些函数在网上很容易就可以查到定义和写法,这里就不赘述了。令人感兴趣的是这些函数什么时候执行, 特别是复制构造函数和析构函数。用编写的一段(很丑的)代码来说明。#include<iostream>#include<cstdio>#include<cmath>class Point{private: /* data */ double x, y ; friend Point& __doa(Point *ths, const Point&
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;lt;bits/stdc++.h&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;x ,
2019-01-18 20:27:42 209
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人