Uniform

用PaddlePaddle实现图像分类-MobileNet

折月煮酒 提交于 2021-01-04 17:42:21
项目简介 本项目使用paddle实现图像分类模型 MobileNet-V1网络的训练和预测。MobileNet-V1是针对传统卷积模块计算量大的缺点进行改进后,提出的一种更高效的能够在移动设备上部署的轻量级神经网络,建议使用GPU运行。动态图版本请查看: 用PaddlePaddle实现图像分类-MobileNet(动态图版) 下载安装命令 ## CPU版本安装命令 pip install -f https://paddlepaddle.org.cn/pip/oschina/cpu paddlepaddle ## GPU版本安装命令 pip install -f https://paddlepaddle.org.cn/pip/oschina/gpu paddlepaddle-gpu 模型结构 MobileNet的核心思想是将传统卷积分解为深度可分离卷积与1 x 1卷积。深度可分离卷积是指输入特征图的每个channel都对应一个卷积核,这样输出的特征的每个channel只与输入特征图对应的channel相关,具体的例如输入一个 K×M×NK\times M\times N K × M × N 的特征图,其中K为特征图的通道数,M、N为特征图的宽高,假设传统卷积需要一个大小为 C×K×3×3C\times K\times 3\times 3 C × K × 3 × 3

MCMC

我只是一个虾纸丫 提交于 2020-12-29 17:03:12
MCMC MCMC算法 的核心思想是我们已知一个概率密度函数,需要从这个概率分布中采样,来分析这个分布的一些统计特性,然而这个这个函数非常之复杂,怎么去采样?这时,就可以借助MCMC的思想。 它与 变分自编码 不同在于:VAE是已知一些样本点,这些样本肯定是来自于同一分布,但是我们不知道这个分布函数的具体表达式,然而我们需要从这个分布中去采取新的样本,怎么采样,这时,就需要借助VAE的思想。 MCMC原理讲解 以下内容博客转自: https://www.cnblogs.com/xbinworld/p/4266146.html 背景 随机模拟也可以叫做蒙特卡罗模拟(Monte Carlo Simulation)。这个方法的发展始于20世纪40年代,和原子弹制造的曼哈顿计划密切相关,当时的几个大牛,包括乌拉姆、冯.诺依曼、费米、费曼、Nicholas Metropolis, 在美国洛斯阿拉莫斯国家实验室研究裂变物质的中子连锁反应的时候,开始使用统计模拟的方法,并在最早的计算机上进行编程实现。[3] 随机模拟中有一个重要的问题就是给定一个概率分布p(x),我们如何在计算机中生成它的样本。一般而言均匀分布 Uniform(0,1)的样本是相对容易生成的。 通过线性同余发生器可以生成伪随机数,我们用确定性算法生成[0,1]之间的伪随机数序列后,这些序列的各种统计指标和均匀分布 Uniform

MCMC等采样算法

不羁岁月 提交于 2020-12-29 13:36:15
一、直接采样 直接采样的思想是,通过对均匀分布采样,实现对任意分布的采样。因为均匀分布采样好猜,我们想要的分布采样不好采,那就采取一定的策略通过简单采取求复杂采样。 假设y服从某项分布p(y),其累积分布函数CDF为h(y),有样本z~Uniform(0,1),我们令 z = h(y),即 y = h(z)^(-1),结果y即为对分布p(y)的采样。 直接采样的核心思想在与CDF以及逆变换的应用。在原分布p(y)中,如果某个区域[a, b]的分布较多,然后对应在CDF曲线中,[h(a), h(b)]的曲线斜率便较大。那么,经过逆变换之后,对y轴(z)进行均匀分布采样时,分布多的部分(占据y轴部分多)对应抽样得到的概率便更大, 局限性 实际中,所有采样的分布都较为复杂,CDF的求解和反函数的求解都不太可行。 二、拒绝采样 拒绝采样是由一个易于采样的分布出发,为一个难以直接采样的分布产生采样样本的通用算法。既然 p(x) 太复杂在程序中没法直接采样,那么便一个可抽样的分布 q(x) 比如高斯分布,然后按照一定的方法拒绝某些样本,达到接近 p(x) 分布的目的。 计算步骤 设定一个方便抽样的函数 q(x),以及一个常量 k,使得 p(x) 总在 k*q(x) 的下方。(参考上图) x 轴方向:从 q(x) 分布抽样得到 a; y 轴方向:从均匀分布(0, k*q(a)) 中抽样得到 u;

hashlib,urlparse,urlsplit,urllib,httplib,random,sys.stdout

怎甘沉沦 提交于 2020-12-26 12:59:28
1、hashlib import hashlib hash_new = hashlib.sha1() //调用hashlib里的sha1()生成一个sha1 hash对象 hash_new.update(params_data) //通过update方法对字符串进行sha1加密的更新处理 hash_value = hash_new.hexdigest() //十六进制的结果 return hash_value //返回结果 2、urlparse urlparse : url = ’http://netloc/path;param?query=arg#frag’ parsed = urlparse(url) print parsed 结果:ParseResult(scheme=’http’, netloc=’netloc’, path=’/path’,params=’param’, query=’query=arg’, fragment=’frag’) urlsplit () parsed = urlsplit(url) print parsed 结果:SplitResult(scheme=’http’, netloc=’user:pwd@NetLoc:80’,path=’/p1;param/p2;param’, query=’query=arg’, fragment=’frag’

一文看懂HNSW算法理论的来龙去脉

99封情书 提交于 2020-12-25 08:24:18
HNSW算法----Hierarchcal Navigable Small World graphs,第一贡献者:Y.Malkov(俄) 一.背景介绍 在浩渺的数据长河中做高效率相似性查找一直以来都是让人头疼的问题。比如,我在搜狗app上阅读了一篇文章,推荐系统就应当为我推送与这篇文章最相近的文章,数据库中所有文章是用向量表示的,所以我们要解决的问题就是“找到与这篇文章的向量最相近的几个向量”,然后把这些向量对应的文章推送出去。数据库中的文章千千万,所有用户每秒的请求也是千千万,我们需要又快又准又相对节约资源的办法来解决这个问题。 解决这个问题的方法有很多,PQ,Annoy,HNSW等等。篇幅有限,这篇文章只介绍HNSW算法。 二.朴素想法 朴素想法图 请大家把目光投向上面这张图。假设我们现在有13个2维数据向量,我们把这些向量放在了一个平面直角坐标系内,隐去坐标系刻度,它们的位置关系如上图所示。 朴素查找法:不少人脑子里都冒出过这样的朴素想法,把某些点和点之间连上线,构成一个查找图,存下来备用;当我想查找与粉色点最近的一点时,我从任意一个黑色点出发,计算它和粉色点的距离,与这个任意黑色点有连接关系的点我们称之为“友点”(直译),然后我要计算这个黑色点的所有“友点”与粉色点的距离,从所有“友点”中选出与粉色点最近的一个点,把这个点作为下一个进入点,继续按照上面的步骤查找下去

numpy学习(三)

拥有回忆 提交于 2020-12-14 04:51:55
练习篇(Part 3) 31. 略 32. Is the following expressions true? (★☆☆) 1 np.sqrt(-1) == np.emath.sqrt(-1) 1 print (np.sqrt(-1) == np.emath.sqrt(-1)) 运行结果:False 33. How to get the dates of yesterday, today and tomorrow? (★☆☆) 1 yesterday = np.datetime64( ' today ' , ' D ' ) - np.timedelta64(1, ' D ' ) 2 today = np.datetime64( ' today ' , ' D ' ) 3 tomorrow = np.datetime64( ' today ' , ' D ' ) + np.timedelta64(1, ' D ' ) 4 print ( " yesterday: " + str(yesterday)) 5 print ( " today: " + str(today)) 6 print ( " tomorrow: " +str(tomorrow)) 运行结果: yesterday:2019-09-24 today:2019-09-25 tomorrow:2019-09-26 34.

mapbox-gl添加下雪效果

自闭症网瘾萝莉.ら 提交于 2020-12-12 19:39:40
原理: webgl制作snowing效果 叠加上一个制作的snowing canvas到mapbox gl的canvas下面 效果: 源码: <! DOCTYPE html > < html lang ="en" > < head > < meta charset ="UTF-8" > < title > Title </ title > < style > #canvas { position : absolute ; top : 0 ; left : 0 ; height : 100% ; width : 100% ; } </ style > </ head > < body > < canvas id ="canvas" ></ canvas > < script src ="../resources/webgl-utils.js" ></ script > < script id ="2d-vertex-shader" type ="x-shader/x-vertex" > attribute vec2 a_position; uniform vec2 u_wh; void main() { gl_PointSize = 4.0 ; vec2 t1 = a_position * 2.0 / u_wh ; vec2 t4 = vec2(t1.x - 1.0 ,(t1.y -

OpenGL学习(六)纹理与obj格式模型的读取

不羁的心 提交于 2020-12-12 13:11:17
目录 前言 纹理映射 纹理坐标 映射到简单正方形 读取图像 生成正方形数据 生成纹理 着色器贴纹理 读取obj文件 obj文件格式 编写readObj函数进行读取 渲染一张桌子 完整代码 c++ 顶点着色器 片元着色器 前言 上一篇博客回顾: OpenGL学习(五)相机变换,透视投影与FPS相机 在上一篇博客中,我们利用相机变换矩阵,对场景进行透视投影,同时我们实现了可以自由飞翔的 FPS 相机。 迄今为止我们的渲染都是非常单调并且过时的,今天我们来引入一些现代化的东西,来丰富我们的场景。 首先我们会利用一张图片生成纹理,随后我们将这张图片贴在我们的物体上。这就像现代计算机游戏中,我们可以让艺术家们人为的制定一些图片,而不是由程序员大费周章的生成它。 在最后我们通过读取 obj 格式的模型并且创建对应的纹理,来绘制一些精美的模型。 ⚠ 该部分的绘制代码基于上一篇博客: OpenGL学习(五)相机变换,透视投影与FPS相机 博客内容因为篇幅关系,不会完整的列出所有的代码 完整代码会放在文章末尾 纹理映射 在正式开始之前,我们需要了解纹理映射的知识。在计算机游戏中,我们往往见到很多精美的模型,比如下图的水果摊,就有很多个🍎。 通过模型实际上还原这些🍎的几何细节是非常困难的。而且我们还要确定他们的颜色,这更加是难上加难。 于是我们想出了一个曲线救国的方式:我们将一张图片贴上去

C++11 随机数和随机颜色

允我心安 提交于 2020-12-08 04:51:17
1.c++11提供的random实现了随机数库,它通过随机数引擎类(random_number_engines)产生随机数序列,随机数分布类(random-number distribution)使用随机数引擎生成服从特定概率分布的随机数。 #include <iostream> #include <random> std::default_random_engine e; std::uniform_real_distribution < double > random( 0 , 1 ); void SerialPortWidget::slotTest() { qDebug() << " r: " <<random(e)<< " i: " << int (random(e)* 255 ); // QColor color=QColorDialog::getColor(Qt::red,this,"选择颜色"); btnTest->setStyleSheet( " background-color:rgb( " +QString::number( int (random(e)* 255 ))+ " , " +QString::number( int (random(e)* 255 ))+ " , " +QString::number( int (random(e)* 255 ))+ "

C++11随机数的正确打开方式

与世无争的帅哥 提交于 2020-12-07 08:59:12
C++11随机数的正确打开方式 在C++11之前,现有的随机数函数都存在一个问题:在利用循环多次获取随机数时,如果程序运行过快或者使用了多线程等方法, srand((unsigned)time(null)) 这样的设置当前系统时间为种子的方法每次返回的随机数都是一样的。而C++11中提供了真随机数做种子的方法来解决这一问题。 By the way,2019年了,我见过的编译器都不需要特殊指定使用的是C++11的新特征了 random_device 标准库提供了一个 非确定性随机数 生成设备.在Linux的实现中,是读取/dev/urandom设备;Windows的实现是用rand_s,使用的是操作系统来生成加密安全的 伪随机数 注意,urandom实际上也是一种伪随机数,具体见下一节 random_device提供()操作符,用来返回一个min()到max()之间的一个数字. 注意这里的min()和max()都是只能看不能改的。 random_device一般只用来作为其他伪随机数算法的种子,原因有三: random_device的最大值和最小值不能修改,当然可以通过取模的方式获得想要的范围的数,但是毕竟不太优雅 当熵池用尽后,许多random_device的具体实现的性能会急速下降(原话是:"the performance of many implementations of