自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 资源 (1)
  • 收藏
  • 关注

原创 基于linux系统的OpenGL环境(四)——红宝书简单示例

创建缓存  在OpenGL中绘制模型图像,首先要创建并分配缓存区,然后将模型的顶点数据传入到缓存区中。GLuint vao, vbo[2];// 设置顶点缓存glGenVertexArrays(1, &vao);glBindVertexArray(vao);// 顶点缓存数据glGenBuffers(2, vbo);// 分配OpenGL缓存空间long unsigned int size_array = sizeof(GLfloat) * num * 4;// 顶点数据1gl

2020-12-29 20:53:30 38 2

原创 基于linux系统的OpenGL环境(三)——运行红宝书上的示例程序

第9版OpenGL红宝书示例程序绘制三角形#include <stdio.h>#include <iostream>#include <malloc.h>#include <EGL/egl.h>#include <EGL/eglext.h>#include <GL/gl.h>#include <GL/glext.h>#define EGL_EGLEXT_PROTOTYPES#include "OpenG

2020-12-01 17:38:47 53

原创 基于linux系统的OpenGL环境(二)

OpenGL函数文档远程显示设备  继续上一篇,使用EGL创建surface之后,就可以进行编译和执行了# 编译链接gcc -o example example.c -lEGL# 执行./example如果程序马上执行结束,就是属于正常的,如果程序卡在那里不动也没有结束,就说明还有问题,可能是在寻找显示设备DISPLAY,但是寻找不到就卡在那里。EGL创建的surface会绑定到一个默认显示设备上,而linux中可以通过设置DISPLAY变量来指定显示设备,同时也可以将显示设备设置为一个远程

2020-11-27 22:15:02 78

原创 基于linux系统的OpenGL环境

简介相关资料有khronos.org/eglnvidia developer blogOpenGL without X.org in linuxPyOpenGL headless rendering  linux系统对于图形渲染的支持是非常复杂繁琐的,对于初学者,人都会看晕了,这其中涉及很多东西如GL,EGL,GLX,WGL,AGL,XGL,XGLX,GLUT,GLFW,GL3W,GLEW,GLAD,GLU,GLM,X11,Xming,Xmanager,Xserver,wayland,Vulka

2020-11-26 23:18:36 117

原创 PyOpenGL帧缓存

安装python -m pip install PyOpenGL PyOpenGL_accelerate -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com文档资料PyOpenGL在Pypi的地址PyOpenGL开发文档PyOpenGL在python上与C的部分区别GL开发文档GLU开发文档  参考书有《OpenGL Programming Guide》,俗称“红宝书”。离屏渲染  刚开始

2020-11-23 16:23:01 37

原创 近似推断

生成模型中的推断  模型分为生成模型和判别模型,生成模型能够随机生成观测数据,同时对观测值XXX和标注值YYY进行概率建模,从而计算出P(X,Y)P(X,Y)P(X,Y),而判别模型只能建立从观测值XXX到标注值YYY之间的映射,从而计算出P(Y∣X)P(Y|X)P(Y∣X)。在深度学习的生成模型中,一般会把观测值xxx称为可见变量vvv,将标注值yyy称为不可见的隐变量hhh。  许多概率生成模型为了计算p(v,h)p(v,h)p(v,h),需要采用一些训练方法。对于采用极大似然的训练方法,此过程中必

2020-11-18 20:18:36 43

原创 torch读取数据

  使用torchvision.datasets.ImageFolder来读取图片torchvision.datasets.ImageFolder(root="root folder path", [transform, target_transform])root : 指定图片存储的路径,在下面的例子中是’./data/dogcat_2’transform: 一个函数,原始图片作为输入,返回一个转换后的图片。target_transform - 一个函数,输入为target,输出对其的转换。例

2020-11-11 14:46:59 79 2

原创 基于python与CUDA的N卡GPU并行程序——直线和三角形的交点

  设直线过点m,直线向量为VL,设三角形平面过点n,平面法向量为VP,两者的交点为O。直线方程为{mx+VLx⋅t=xmy+VLy⋅t=ymz+VLz⋅t=z\left\{\begin{aligned}\\m_x+VL_x\cdot t=x\\m_y+VL_y\cdot t=y\\m_z+VL_z\cdot t=z\end{aligned}\right.⎩⎪⎨⎪⎧​mx​+VLx​⋅t=xmy​+VLy​⋅t=ymz​+VLz​⋅t=z​平面方程为VPx⋅(x−nx)+VPy⋅(y−ny)

2020-10-23 18:50:57 30

原创 基于python与CUDA的N卡GPU并行程序——使用taichi语言实现三角形光栅化算法

  在计算机图形学中,需要扫描三角形以进行光栅化。比如渲染引擎的计算过程,需要计算从每个像素发出去的光线是否能够碰撞到某个三角形面片,这个时候需要将3D的三角形,按照几何透视原理,投影到2D的光源空间上,然后扫描每个三角形。重心坐标系插值算法  Barycentric Coordinates即重心坐标系插值算法,能够计算2D平面上的任意一点到三个顶点的相对位置,然后依次判断这个点是否在三角形内部,如果在三角形内部,就给这个像素图上颜色,这时就可以完成三角形光栅化。  已知三角形的三个顶点A,B,C,设

2020-10-15 20:19:12 47

原创 基于python与CUDA的N卡GPU并行程序——taichi语言笔记(二)

基于结构节点的数据布局  自定义不同的数据结构的布局,可以提升缓存命中率,提升运行速度。有好几种Snode,如root,dense,pointer,bitmasked,dynamic,place。声明不同大小的张量# 零维张量x = ti.field(ti.f32)ti.root.place(x)# 相当于:x = ti.field(ti.f32, shape=())# 一维张量x = ti.field(ti.f32)ti.root.dense(ti.i, 3).place(x)#

2020-10-13 17:48:39 66 1

原创 基于python与CUDA的N卡GPU并行程序——taichi语言笔记

  如果要做并行程序,就要使用CUDA,这个原本是要用C语言来写的,但是C语言的开发稍微有点麻烦,经常出现内存报错之类的bug,如果可以使用语法更加简单的python语言来开发,就会更加快捷方便,这时可以有一个选择,就是使用taichi语言,这里记录一些零散的笔记。  ...

2020-10-13 12:00:30 116

原创 MTCNN+FaceNet人脸识别

人脸识别简介  人脸验证是验证一个人的图片是否对应到一个人的名字ID,如果把这个方法应用到人脸识别,如果验证一个人脸的错误率是1%,那么在100个人的数据库上进行识别,其总体错误率就会很高。所以,如果要在大型数据库上识别每个人,并且错误率比较低,那么人脸验证所需要的达到的精度需要很高才行,比如99.99%,这是比较困难的。  实现人脸验证的一个难点在于需要解决One-Shot一次学习问题,这意味着在数据库中,只需要提供一张照片,就能在任何场景下识别出这个人。而通常的深度学习分类方法,在只有一个训练样例时

2020-08-19 17:15:53 177

原创 基于VimPlus配置vim编辑器环境

  首先可以在~/.vim/.vimrc中设置vim编辑器的一些基本属性" 基本配置" 设置行号set number" 语法高亮。自动识别代码,使用多种颜色表示syntax enable" 选择颜色主题(已经下载好并放到~/.vim/colors文件夹下) colorscheme badwolf" 支持使用鼠标set mouse=a" 按下回车键后,下一行的缩进会自动跟上一行的缩进保持一致set autoindent" 按下Tab键后,vim显示的空格数set tabstop=4

2020-07-30 20:30:54 41

原创 安装gitbook+fastapi

如何在服务器上安装fastapi  首先在conda虚拟环境下安装fastapi包python -m pip install fastapi uvicorn1之后创建一个脚本testWeb.pyfrom typing import Optionalfrom fastapi import FastAPIapp = FastAPI()@app.get("/")def read_root(): return {"Hello": "World"}@app.get("/item

2020-07-26 17:49:36 43

原创 pytorch简单示例

中文文档简单三层全连接网络import torch # N is batch size; D_in is input dimension;# H is hidden dimension; D_out is output dimension.N, D_in, H, D_out = 64, 1000, 100, 10 # Create random Tensors to hold inputs and outputs.x = torch.randn(N, D_in)y = torch.ran

2020-07-02 13:58:19 252

原创 基于C++与CUDA的N卡GPU并行程序——在python中使用pyCUDA编写GPU程序
原力计划

  官网文档简单示例导入包import pycuda.autoinitimport pycuda.driver as drvimport numpyfrom pycuda.compiler import SourceModule初始化数据变量a = numpy.random.randn(400).astype(numpy.float32)b = numpy.random.randn(400).astype(numpy.float32)dest = numpy.zeros_like(a)

2020-06-26 16:15:21 180

原创 基于C++与CUDA的N卡GPU并行程序——cuBLAS简介

  cuBLAS官方文档  为了使用cuBLAS库,只需要在C代码中导入库文件即可include "cublas.h" #旧版include "cublas_v2.h" #新版编译代码文件时需要导入链接库nvcc myCublasApp.c -lcublas -o myCublasAppnvcc myCublasApp.c -lcublas_static -lculibos -o myCublasApp库文件中有三个API集合,分别是cuBLAS,cuBLASXt和cu

2020-06-25 14:57:55 363

原创 基于C++与CUDA的N卡GPU并行程序——在python中使用numba库编写GPU程序

文档  numba文档  nvidia论坛文档  numba官网简介解决numba报错  在python中使用numba编写CUDA程序时会有一个报错NvvmSupportError: libNVVM cannot be found. Do conda install cudatoolkit: 这一般是关于CUDA的环境变量没有识别出来,所以需要在bashrc或/etc/profile中加入环境变量 export CUDA_HOME=/usr/local/cuda expor

2020-06-19 08:51:05 278

原创 基于C++与CUDA的N卡GPU并行程序——虚幻5渲染视频很牛逼?让我们从底层C++开始自制光线追踪渲染器,并自制高级版《我的世界》
原力计划

哈喽,带嘎吼.最近5月13日,官方放出了虚幻5的演示视频,据说是可以同屏显示数亿三角形,从而实时渲染出电影级别的画质,其动态光照效果也是极其逼真.

2020-05-24 16:17:55 481 1

原创 基于C++与CUDA的N卡GPU并行程序——OpenGL图形互操作性
原力计划

图形互操作性的极简框架示例  GPU的成功要归功于它能实时计算复杂的渲染任务,同时系统的其他部分还可以执行其他的任务,这就带来了一个显而易见的问题:能否在同一个应用程序中GPU既执行渲染计算,又执行通用计算?如果要渲染的图像依赖通用计算的结果,那么该如何处理?或者在已经渲染的帧上执行某种图像处理,又该如何实现?  在通用计算和渲染模式之间存在这种互操作,CUDA C应用程序可以无缝地与Open...

2020-05-04 22:01:08 257

原创 基于C++与CUDA的N卡GPU并行程序——内存操作

常量内存  有时,计算速度的性能瓶颈不在于数学计算速度,而是内存带宽.硬件提供了64kb或者更多的常量内存,用于保存在核函数执行期间不会发生变化的数据,在有些情况中使用常量内存来替换全局内存,能有效减少内存带宽.如果是全局内存,其声明方式很简单,如下所示Sphere *s;//Sphere是某个自己定义的类,s是声明的类对象指针变量如果是常量内存,声明方法与共享内存是类似的,常量内存是在前...

2020-04-29 18:16:59 184

原创 SimPy(四)

""" Initial test of the WFQ queueing discipline implementation. Copyright 2014 Dr. Greg M. Bernstein We base our parameter explorations on the first source. We set the output rate of the...

2019-11-05 09:26:59 24

原创 SimPy(三)

SimComponents包在这里直接将开源仿真包下载粘贴如下""" A bit more detailed set of components to use in packet switching queueing experiments. Copyright 2014 Greg M. Bernstein Released under the MIT lice...

2019-11-05 09:19:54 313 2

原创 SimPy(二)

Shared Resources共享资源在进程交互中可能需要用到,一系列进程进行排队以使用某种资源,比如多个客户等待银行服务,多辆汽车等待通过缴费站,仓库货物的运输消耗和通信网络的数据包转发等.Resources,可以由有限数量的过程一次使用的进程(例如,具有有限数量的燃油泵的加油站).Containers,用于模拟同质,无差别主体的生产和消费的资源,可以是连续的(如水)或离散的(如苹果)....

2019-11-05 09:17:35 677

原创 SimPy

目录简介安装命令EnvironmentEventsSleep until woken upWaiting for another process to terminateInterrupting another process简介  SimPy是一个基于Python的异步事件调度器,产生一系列事件并按照仿真时间进行计划安排升序排列,在事件的循环序列中触发并执行,产生回调返回响应值,在物流,工厂...

2019-11-05 08:35:29 1278

原创 命令行笔记

Clinux下当出现如下的错误:area_cycle.c:(.text+0x7f):对‘pow’未定义的引用collect2: error: ld returned 1 exit status时解决的办法是编译的时候加上 -lm,如gcc -o file file.c -lm#include <stdio.h>#include <math.h>void ...

2019-09-28 15:13:26 113

原创 基于C++与CUDA的N卡GPU并行程序——二维矩阵索引、按行求和、矩阵乘法

  之前的程序只涉及到了一维数组的操作,那么对于二维矩阵如何操作呢?假设有一个MMM行NNN列的二维矩阵AAA,首先在C++中为了能够使用二维索引,需要定义长度为M∗NM*NM∗N的一级数据指针float ∗a_datafloat\ *a\_datafloat ∗a_data保存所有矩阵元素,然后定义长度为MMM的二级指针float ∗∗afloat\ **afloa...

2019-06-12 16:10:01 521

原创 基于C++与CUDA的N卡GPU并行程序——随机数生成、数组求和

  首先笔者的GPU显卡是Nvidia的GTX1060 6g,安装好显卡驱动和CUDA软件包之后就可以写并行程序了,编译可执行文件的命令为nvcc -o helloWorld helloWorld.cu -lcurand其中-o helloWorld表示生成可执行文件helloWorld,helloWorld.cu是编写的程序文件,-lcurand表示动态链接库libcurand.so,其中...

2019-06-04 20:55:30 369

原创 图的数据读取和广度优先搜索

  对于一个图或者网络G=(V,E)\mathcal{G}=(V,E)G=(V,E)来说,其数据一般有两种表示方式,第一种是一个行数和列数均为∣V∣|V|∣V∣的邻接矩阵,第二种是只记录连边信息的邻接表.如果网络的规模很大,那么邻接矩阵的数据空间需要O(∣V∣2)O(|V|^2)O(∣V∣2)复杂度,所以是不现实的,这时一般采用邻接表的方式进行表示.在C/C++的数据结构中,先定义一个结构体数组表...

2019-06-03 14:58:29 66

原创 使用matlab读取gml网络数据

  许多网络数据都保存为.gml格式的文件,可以使用Gephi软件进行读取,但是这样可能会有点麻烦,所以可以考虑使用matlab程序进行网络数据的格式转换,可以使用如下代码。function AdjGraphMat = gmlread(fileName,isDirect)% ReadMe:% 功能:此函数用于读取gml格式的网络数据文件% 参数列表:% 第一个传入参数为文件名% 第二个...

2019-05-15 23:38:35 996 2

原创 GMM

  许多概率模型有一系列可见变量vvv和一系列潜变量hhh,这时常常会涉及推断困难,就是指难以计算p(h∣v)p(h|v)p(h∣v)或其期望,而这样的操作在一些诸如最大似然学习的任务中往往是必需的。为此可以把精确推断问题描述为一个优化问题,借此推导出推断算法。为了构造这样一个优化问题,假设一个具有可见变量vvv和潜变量hhh的概率模型,按照最大似然估计,我们希望计算观察数据的对数概率log&nb...

2019-04-23 02:41:00 128

原创 深度学习装机总结

  这里的硬件是i7 4790的CPU,技嘉B85-HD3主板,长城电源,AMD入门独显刀卡,英伟达矿卡GP106-100。win10系统  这里装双系统,矿卡的魔改驱动要求win10在1803版本以上,CPU在4代以上,所以这里装的是win10的1809版本+ubuntu18.04。用win10装机U盘,打开电源按F12进入启动引导选项,选择装机U盘按Enter确定,在装机系统左面选择磁盘分...

2019-01-10 06:08:32 975

原创 PID神经网络控制

  采用增量PID的神经网络的输入层有三个量x1(k)=e(k)=r(k)−y(k)x_1(k)=e(k)=r(k)-y(k)x1​(k)=e(k)=r(k)−y(k)x2(k)=Δe(k)=e(k)−e(k−1)x_2(k)=\Delta e(k)=e(k)-e(k-1)x2​(k)=Δe(k)=e(k)−e(k−1)x3(k)=Δ2e(k)=Δe(k)−Δe(k−1)=e(k)−2e(k...

2018-12-11 17:20:04 6890 11

原创 Spark笔记(三)

数据读取与保存动机  有时候,数据量可能大到无法放在一台机器中,这时就需要探索别的数据读取和保存的方法了。Spark支持很多种输入输出源,一部分原因是Spark本身是基于Hadoop生态圈而构建,特别是Spark可以通过Hadoop MapReduce所使用的InputFormat和OutputFormat接口访问数据,而大部分常见的文件格式与存储系统(例如S3、HDFS、Cassandra、...

2018-12-07 21:19:56 111

原创 Spark笔记(二)

键值对操作  键值对RDD是Spark中许多操作所需要的常见数据类型,这里介绍如何操作键值对RDD。键值对RDD通常用来进行聚合计算,我们要先通过一些初始ETL(抽取、转化、装载)操作来将数据转化为键值对形式,键值对RDD提供了一些新的操作接口(比如统计每个产品的评论,将数据中键相同的分为一组,将两个不同的RDD进行分组合并等)。也会讨论用来让用户控制键值对RDD在各节点上分布情况的高级特性:分...

2018-12-07 20:51:47 191

原创 Spark笔记(一)

下载Spark  访问Spark下载页面,选择包类型为&amp;amp;amp;amp;amp;amp;amp;quot;Pre-built for Hadoop 2.7 and later&amp;amp;amp;amp;amp;amp;amp;quot;,然后选择&amp;amp;amp;amp;amp;amp;amp;quot;Direct Download&amp;amp;amp;amp;amp;amp;amp;quot;,这样就有一个压缩的TAR文件spark-

2018-12-03 03:16:42 105

原创 RBM受限玻尔兹曼机的公式推导及代码实现(matlab)

  考虑一组具有mmm个样本的数据集X={x(1),…,x(m)}\mathbb{X}=\{x^{(1)},\dots,x^{(m)}\}X={x(1),…,x(m)},独立地由真实数据生成分布pdata(x)p_{data}(x)pdata​(x)生成。令pmodel(x;θ)p_{model}(x;\theta)pmodel​(x;θ)是一族由θ\thetaθ确定在相同空间上的概率分布,换言之...

2018-11-10 19:29:04 1618

转载 SOM(Kohonen)

  自组织特征映射的主要目的是将任意维数的输入信号模式转变为一维或二维的离散映射,并且以拓扑有序的方式实现这个变换。呈现给网络的每个输入模式,通常包含面对平静背景的一个局部化活动区域或“点”,这个点的位置和性质通常随输入模式的实现不同而不同,因此网络中所有神经元赢经历输入模式的足够次数的不同实现,确保有机会完成恰当的自组织过程。  负责形成自组织映射的算法,第一步进行网络突触权值的初始化。这个工...

2018-11-08 18:23:51 1982

原创 Higher-order clustering in networks摘要

介绍  网络是复杂系统的基本工具,即使有的网络是稀疏的,依然会有的边趋向于出现在小的聚集结构中,这种聚集结构可以解释为局部演化过程。例如社会网络中聚集结构的出现是源于三角形,其中两个人共有一个朋友,则更可能成为朋友,形成闭三角。聚集系数是度量网络中的三角形数量,定义为三节点中闭合的比例。然而聚集系数是有限制的,只涉及三角形,更多节点的高阶结构也是重要的,四节点就反映词组和蛋白质网络的结构,但是...

2018-09-15 08:50:48 313

原创 higher-order organization of complex networks摘要

  网络中,高阶链接模式是控制和调节复杂系统的基本结构,大部分高阶结构是指一个小的子图,这种小的子图是复杂系统的建筑块。例如,正反馈回路是调控网络的关键要素,三元组是社交网络的关键,双向开三角结构是大脑hub节点的关键,开三角结构是航空网络的关键模式。这里介绍高阶结构,并提出一种聚类框架。   给定一个网络模块MMM,寻找一种聚类SSS以满足两种目标。首先,节点应参与尽量多的模块MMM,其次集合...

2018-08-26 00:46:30 639 5

lodepng-master.zip

别人写的C++头文件,能够支持导入png图片,只需要把里面的.cpp和.h两个文件放进自己的代码目录中,就能够使用了,也不需要使用第三方库之类的

2020-05-24

空空如也

空空如也

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

TA关注的人 TA的粉丝

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