k-means及k-means++原理【python代码实现】
在jupyter中使用python pdb调试代码
目前在jupyter中还没有可视化调试界面,而python pdb是代码调试的一个不错的选择,它支持设置断点和单步调试,使用起来非常方便
手推公式带你轻松理解L1/L2正则化
numpy和torch数据类型转化问题
在实际计算过程中,float类型使用最多,因此这里重点介绍numpy和torch数据float类型转化遇到的问题,其他类型同理。
Batch Normalization:批量归一化详解
为什么要使用BN
在深度学习中,层数很多,可能有几十层甚至上百层,每次训练激活的过程中,参数不断改变,导致后续每一层输入的分布也发生变化,而学习的过程就是要使每一层适应输入的分布,如果不做BN就会使模型学的很小心,也会使学习速率变慢,因此我们不得不降低学习率、小心地初始化。
那怎么才能让我们的模型学习的更高效呢?
原有的方式可能是歪着学的,学的效果不是很好,如下图B所示,现在我们需要让它激活到一个更适合学习的位置上,那就需要把它放到原点,这个位置更适合,这时候就需要BN了
原点周围更敏感,假定一开始你的数据不在原点周围,后面如果越来越偏,说不定会偏去哪,也就是指W一会大一会小,一会是正值,一会是负值,如下图B所示,也不利于更新。
神经网络之多维卷积的那些事(一维、二维、三维)
PyTorch之torchvision.transforms详解[原理+代码实现]
深入理解GAN对抗生成网络
什么是GAN
Generative Adversarial Networks,生成式对抗网络,Ian Goodfellow 在2014 年提出的一种生成式模型
基本思想来自博弈论的二人零和博弈(纳什均衡), 由一个生成器和一个判别器构成,通过对抗学习来训练
- 生成器的目的是尽量去学习真实的数据分布
- 判别器的目的是尽量正确判别输入数据是来自真实数据还是来自生成器
- 生成器和判别器就是一个矛和盾互相PK的过程
- 为了取得游戏胜利,这两个游戏参与者需要不断优化, 各自提高自己的生成能力和判别能力,这个学习优化过程就是寻找二者之间的一个纳什均衡
G代表生成器,D代表判别器,Z是输入源,称为Noise source,就是一个随机编码。给出一个random code(即Z)由生成器G生成假数据X’,假数据X’和真实数据X喂给判别器D,由D判别出哪个是real,哪个是fake,这个就是gan的基本原理