- 博客(73)
- 收藏
- 关注
翻译 CUDA编程模型
本章介绍了CUDA编程模型背后的主要概念,概述了它们在C++中的公开方式。在编程接口中对CUDA C++进行了详尽的描述。本章和下一章中使用的矢量加法示例的完整代码可以在矢量加法CUDA示例中找到。
2023-10-14 16:44:38
184
翻译 CUDA介绍
这种可扩展的编程模型允许GPU架构通过简单地扩展多处理器和内存分区的数量来跨越广泛的市场范围:从高性能爱好者GeForce GPU和专业的Quadro和Tesla计算产品到各种廉价的主流GeForce GPU(请参阅CUDA启用的GPU以获取所有CUDA启用GPU的列表)。虽然CPU被设计成擅长以尽可能快的速度执行一系列被称为线程的操作,并且可以并行执行几十个这样的线程,但GPU被设计成善于并行执行数千个这样的操作(将较慢的单线程性能均衡以实现更大的吞吐量)。它的核心是三个关键的抽象——
2023-10-13 11:31:49
209
原创 python读取CSV文件
1.1 参数对参数 ,参见:文件读写操作。1.2.2 读操作1.2.3 写操作2. 利用pandas读取2.1 函数接口返回值为 dataframe
2022-06-30 16:01:45
5233
原创 SVM——支持向量机(二)
硬间隔SVM之前的描述都是基于数据是线性可分的情况。但是实际上并不能保证总是线性可分的;并且全部线性可分的分隔面并不一定是最好的,如下图所示,尽管实线实现了全部分隔,但其间隔很小,有轻微扰动时将会发生误判。相比之下,虚线的分隔面要更好一些。为使得模型能够适应非线性数据集,同时对离群点不那么敏感,将优化模型进行 l1l_1l1 正则化如下:但是,当变量的特征维数迅速扩大时,其特征的组合数也会急速扩大,如令 ϕ(x)\phi(x)ϕ(x) 是三次幂之下的特征组合时,当 xxx 只有三个维度,那么 ϕ(x)
2022-06-29 22:59:54
440
1
原创 SVM——支持向量机(一)
SVM 是是一种二分类模型,基本模型是的定义在特征空间上的间隔最大的线性分类器,SVM的学习策略就是间隔最大化。以逻辑回归为例,hθ(x)=g(θTx)=11+e−θTx\displaystyle h_\theta(x)=g(\theta^Tx)=\frac{1}{1+e^{-\theta^Tx}}hθ(x)=g(θTx)=1+e−θTx1,特征组合经过 sigmoid 函数被映射到 [0,1][0,1][0,1] 之间。对于二分类问题,即可被视为概率,{p(y=1∣x;θ)=hθ(x),p(y=0∣x
2022-06-29 16:45:46
754
原创 C语言——程序解构说明
1. 程序结构说明程序结构#include<stdio.h> //引入头文件/*说明:2. 这是一个 main 函数,是程序的执行入口,程序从 main 函数开始执行3. void 表示 main 函数没有返回值4. main(){ //函数体,即函数语句 语句 1; 语句 2;}*/void main(){ int a = 10; //定义一个整型变量 printf("你好"); //printf 是一个函数,在头文件 <stdio.h>
2022-06-29 09:01:22
668
原创 模型评估与选择
具体的训练集、验证集、测试集不做过多描述。偏差:预计值的期望与真实值之间的差异。排除噪声的影响,偏差更多的是针对某个模型输出的样本误差,是模型无法准确表达数据关系导致的,比如模型过于简单,非线性的数据关系采用线性模型建模,偏差较大的模型是错的模型。方差:预测值的离散程度,也就是离其期望值的距离。模型方差不是针对某一个模型输出样本进行判定,而是指多个(次)模型输出的结果之间的离散差异。这里说的多个模型或者多次模型,即不同模型或同一模型不同时间的输出结果方差较大。方差是由训练集的数据不够导致,一方面 数据样本数
2022-06-27 23:43:36
540
原创 自然语言处理综述
自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。NLP是一门融语言学、计算机科学、数学于一体的科学,涉及自然语言(即人们日常使用的语言),所以它与语言学的研究有着密切的联系,但又有重要的区别。但NLP并不是一般地研究自然语言,而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统,因此又和计算机科学密不可分。早期,自然语言处理中存在着两种不同的研究方法,分别是基于规则的符号主义和基于概率的随机统计经验主义两种不同的
2022-06-26 11:04:28
4706
1
原创 时间序列分析
时间序列是一组按时间顺序排列的观测值 y1,y2,⋯ ,yty_1,y_2,\cdots, y_ty1,y2,⋯,yt。预测 是在给定所有当前信息(包括历史数据和可能影响这些事件的任何未来事件的知识)的情况下,对未来事件和条件的预测。预测可以为商业和经济决策、计划和政府政策提供信息。预测的目标是 在给定观测序列直到现在的时间 ttt,预测时间索引在未来点 t+ht + ht+h 的响应变量。也就是说,给定 y1,y2,⋯ ,yty_1,y_2,\cdots, y_ty1,y2,⋯,yt,预测
2022-06-21 20:00:59
1454
原创 C++头文件容器库——vector
vector的使用,首先添加头文件 vector 是封装动态数组的顺序容器。元素相继存储,不仅可通过迭代器,还能用指向元素的常规指针访问元素。vector 的存储是自动管理的,按需扩张收缩; vector 通常占用多于静态数组的空间,因为要分配更多内存以管理将来的增长; vector 所用的方式不在每次插入元素时,而只在额外内存耗尽时重分配。函数接口(c++20):函数作用:将 other 中的 vector 赋值给 “=” 之前的 vector;不是地址引用,是赋值重建;常规使用示例:1.2 assi
2022-06-20 23:54:21
5563
原创 分类(classification)
在分类中,使用一个 C×CC\times CC×C 的损失矩阵 LLL来表达损失函数,其中,CCC 指类别数。损失矩阵中的每个元素 Lkl=L(k,l)L_{kl}=L(k,l)Lkl=L(k,l) 指将实际类别属于 kkk,但是将其分类到 lll 的损失。常用的损失函数为 0−10-10−1 损失函,其中 Lkl={1,k≠l0,k=l\displaystyle L_{kl}=\left\{ \begin{aligned} 1, && k\neq l \\ 0, && k=l\end{align
2022-06-05 23:08:50
325
原创 商业分析过程
使用业务理解工具有助于对业务的理解: 如双钻石模型(The Double Diamond process),五问法(the Five Why technique)。实际情况下,商业分析是一个学习和发现的递归过程。整个过程可能需要定期重复和更新,因为业务世界总是在不断变化。在商业分析中,预测性建模对商业决策是否成功有着至关重要的作用,原因如下:(1)大数据时代。互联网和数据采集设备(如移动电话、照相机、传感器、读卡器等)的出现,加上存储成本的大幅降低,带来了前所未有的数据可用性,数据集的规模继续大幅增长。
2022-06-02 09:53:31
641
原创 神经网络训练算法
1. 传统优化问题大多数深度学习算法都涉及某种形式的优化。优化指的是改变 xxx 以最小化或最大化某个函数 f(x)f(x)f(x) 的任务。通常以最小化 f(x)f(x)f(x) 指代大多数最优化问题。最大化可经由最小化算法最小化 −f(x)- f(x)−f(x) 来实现。通常,把要最小化或最大化的函数 f(x)f(x)f(x) 称为 目标函数(objective function)、代价函数(cost function)、损失函数(loss function)或误差函数(error function
2022-05-31 22:56:21
2421
1
原创 循环神经网络(Recurrent Neural Network, RNN)
基本概念一般的神经网络(BP以及CNN)只对预先确定的大小起作用:它们接受固定大小的输入并产生固定大小的输出。它们的输出都是只考虑前一个输入的影响而不考虑其它时刻输入的影响, 比如简单的猫,狗,手写数字等单个物体的识别具有较好的效果。但是, 对于一些与时间先后有关的, 比如视频的下一时刻的预测,文档前后文内容的预测等, 这些算法的表现就不尽如人意了。循环神经网络 (Recurrent Neural Network, RNN) 一般是指时间递归神经网络而非结构递归神经网络 (Recursive Neura
2022-05-29 18:11:30
5406
原创 卷积神经网络(convolutional neural network, CNN)
基本定义卷积神经网络(convolutional neural network, CNN),是一类包含卷积计算且具有深度结构的前馈神经网络。卷积神经网络是受生物学上感受野(Receptive Field)的机制而提出的。卷积神经网络专门用来处理具有类似网格结构的数据的神经网络。例如,时间序列数据(可以认为是在时间轴上有规律地采样形成的一维网格) 和图像数据(可以看作是二维的像素网格)。1.卷积层(convolutional layer)作用:特征提取卷积层内部包含多个卷积核,组成卷积核的每个元素都
2022-05-28 17:02:35
65325
11
原创 C 语言基础
一、基本概括二、变量三、运算符四、控制语句五、数据输入输出六、数组七、函数八、预处理命令九、指针十、结构体与共用体十一、动态内存分配十二、枚举类型十三、类型定义符typedef十四、位运算十五、文件...
2022-03-19 18:04:44
170
原创 C语言基础——文件
十五、文件15.1 C 文件概述所谓“文件”是指一组相关数据的有序集合。这个数据集有一个名称,叫做文件名。文件通常是驻留在外部介质(如磁盘等)上的,在使用时才调入内存中来。从不同的角度可对文件作不同的分类。从用户的角度看,文件可分为普通文件和设备文件两种。普通文件 是指驻留在磁盘或其它外部介质上的一个有序数据集,可以是源文件、目标文件、可执行程序;也可以是一组待输入处理的原始数据,或者是一组输出的结果。对于源文件、目标文件、可执行程序可以称作程序文件,对输入输出数据可称作数据文件。设备文件 是指与主机
2022-03-19 17:52:53
12393
2
原创 C语言基础——位运算
十四、位运算14.1 位运算符符号作用&按位与I按位或^按位异或~取反<<左移>>右移14.1.1 按位与运算按位与运算符 “&” 是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。参与运算的数以 补码 方式出现。eg. 9&5=114.1.2 按位或运算按位或运算符 “|” 是双目运算符。其功能是参与运算的两数各对应的二
2022-03-19 17:47:26
328
原创 C语言基础——枚举类型和类型定义符
十二、枚举类型12.1概述在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等。如果把这些量说明为整型,字符型或其它类型显然是不妥当的。为此,C语言提供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚举”类型的变量取值不能超过定义的范围。注意,枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再分解为任何基本类型。12.2枚举类型的定义enum 枚举名{枚举值表};在枚举值表中应罗列
2022-03-19 17:41:02
294
原创 C语言基础——动态内存分配
十一、动态内存分配11.1 概述C语言中,数组的长度是预先定义好的,在整个程序中固定不变,即不允许动态数组类型。但是在实际的编程中,所需的内存空间取决于实际输入的数据,而无法预先确定。因此,以内内存管理函数,常用的有:11.2 内存空间分配函数 malloc:调用形式:(类型说明符*)malloc(size)其功能是在内存的动态存储区中分配一块长度为"size"字节的连续区域。函数的返回值为该区域的首地址。其中,“类型说明符”表示把该区域用于何种数据类型;(类型说明符∗)(类型说明符*)(类型说
2022-03-19 17:34:27
1088
原创 C语言基础——结构体与共用体
十、结构体和共用体10.1 概述在实际问题中,一组数据往往具有不同的数据类型。当然不能用一个数组来存放这种数据。因为数组中各元素的类型和长度都必须一致,以便于编译系统处理。C语言中给出了另一种构造数据类型——“结构(structure)“或叫"结构体”。"结构体”是一种构造类型,它是由若干"成员"组成的。每一个成员可以是一个基本数据类型或者又是一个构造类型。10.2 定义结构体struct 结构体名{ 成员表列;};例如,struct stu{ int num; char na
2022-03-19 17:32:11
685
原创 C语言基础——指针
九、指针9.1 基本概念(1)在计算机中,所有的数据都是存放在存储器中的。(2)一般把存储器中的一个字节称为一个内存单元,不同的数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元等。(3)为了正确地访问这些内存单元,必须为每个内存单元编上号。(4)根据一个内存单元的编号即可准确地找到该内存单元。内存单元的编号也叫做地址。(5)根据内存单元的编号或地址就可以找到所需的内存单元,所以通常也把这个地址称为指针。(6)内存单元的指针和内存单元的内容是两个不同的概念。(7)对于一个内
2022-03-19 17:26:14
1357
原创 C语言基础——预处理命令
八、预处理命令8.1 概述C语言提供了多种预处理功能,如宏定义、文件包含、条件编译等。以"#"号开头的预处理命令:包含命令#include,宏定义命令#define等。在源程序中这些命令都放在函数之外,而且一般都放在源文件的前面,它们称为预处理部分。所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作。预处理是C语言的一个重要功能,它由预处理程序负责完成。当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译。8.2 宏定义
2022-03-19 17:07:12
3244
原创 C语言基础——函数
七、函数7.1 函数定义的形式7.1.1 无参函数类型标识符 函数名(){ 声明部分; //对函数体内部所用到的变量类型说明 语句;}7.1.2 有参函数类型标识符 函数名(形式参数表列){ 声明部分; //对函数体内部所用到的变量类型说明 语句;}其中类型标识符和函数名称为函数头;类型标识符指明了本函数的类型,函数的类型实际上是函数返回值的类型;若无返回值,则类型标识符写为 void ;形式参数是各种类型的变量,因此需在形参表中给出形参的类型说明。7.2 形参和实参(1
2022-03-19 16:58:59
822
原创 C语言基础——数组
六、数组6.1 数组定义类型说明符 数组名 [常量表达式];其中,类型说明符是任一种基本数据类型或构造数据类型;数组名是用户定义的数组标识符;方括号中的常量表达式表示数据元素的个数,也称为数组的长度。int a[10]; //整型数组 a, 有 10 个元素float b[20];char ch[30]; //字符数组 c, 有 30 个元素注意点:(1)数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的;(2)数组下标从 0 开始计算;(3)方括
2022-03-19 16:44:40
289
原创 C语言基础|——控制语句
四、C语言控制语句4.1 C 语言控制语句类别语句条件判断语句if语句、switch语句if语句、switch语句if语句、switch语句循环执行语句do while语句、while语句、for语句do\;while语句、while语句、for语句dowhile语句、while语句、for语句转向语句break语句、return语句、goto语句、continue语句break语句、return语句、goto语句、continue语句break语句、return
2022-03-19 16:40:39
375
原创 C语言基础——数据输入输出
五、数据输入输出5.1 概述C 语言中,所有的数据输入/输出都是由库函数完成的,都为函数语句。在使用 C 语言库函数时,要用预编译命令 #include 将有关头文件包括到源文件中;如,使用标准输入输出时,要用到 **“stdio.h”**文件:#include<stdio.h>或#include"stdio.h"printf("格式控制字符串", 输出表列); //格式输出函数scanf("格式控制字符串", 地址表列); //格式输入函数putchar(字符变量);
2022-03-19 16:31:14
3528
原创 C语言基础——运算符
三、运算符3.1 运算符类别类别符号算术运算符+、−、∗、/、%、++、−−+、 -、*、/、\%、++、--+、−、∗、/、%、++、−−关系运算符<、<=、==、>、>=、!=<、<=、 ==、 > 、>=、 !=<、<=、==、>、>=、!=逻辑运算符或(∥)、且(&&)、非(!)或(\|)、且(\&\&)、非(!)或(∥)、且(&&)、非(
2022-03-19 16:22:11
3066
原创 C语言基础——变量
二、变量2.1 变量基本概述变量是程序的基本组成单位,变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号我们可以找到房间,从而通过变量名可以访问到变量(值)。变量应该有名字,并在内存中占据一定的存储单元;变量名和变量值有不同的含义;变量名实为一个符号地址2.1.1 变量的使用步骤://(1)声明变量:int num;//(2)赋值:num = 60;// (3)使用:printf("num=%d", num);// (4) 变量声明与赋值一步到位:
2022-03-19 16:17:37
9269
2
原创 C语言基础——基本概括
一、基本概括1.1 C 语言关键字autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunionvoidvolatilewhile注意, C语言中,关键字都是小写的
2022-03-19 16:05:49
222
原创 概率——二元变量(0/1)
伯努利分布(Bernoulli distributionBernoulli\;distributionBernoullidistribution)考虑简单的二元随机变量 x∈{0,1}x\in\{0,1\}x∈{0,1},其概率分布有:p(x=1∣μ)=μp(x=1|\mu)=\mup(x=1∣μ)=μ;p(x=0∣μ)=1−μp(x=0|\mu)=1-\mup(x=0∣μ)=1−μ则 xxx 的概率分布为伯努利分布(Bernoulli distributionBernoulli\;distrib
2022-01-15 10:16:33
720
原创 机器学习常用的概率知识
以上图为例,实验进行的总次数为 NNN,nijn_{ij}nij 表示在 xi,yjx_i,y_jxi,yj 条件下的频数,有:ci=∑jnijc_i=\sum_j n_{ij}ci=∑jnij,rj=∑inijr_j=\sum_i n_{ij}rj=∑inij,p(X=xi)=ciN\displaystyle p(X=x_i)=\frac{c_{i}}{N}p(X=xi)=Nci,p(Y=yj)=rjN\displaystyle p(Y=y_j)=\frac{r_{j}}{N}p.
2022-01-13 14:46:39
744
原创 回归概述——多项式拟合
数据生成假设当观察到一个实值的输入变量 x\mathcal xx,而想利用这些观测数据来预测实值变量 ttt。数据由以一个带有噪声的由函数 sin(2πx)sin(2\pi\mathcal x)sin(2πx)生成。现假定给出一个训练集(包括 NNN 个 x\mathcal xx 的观测值,记为 x=(x1,⋯ ,xN)T\mathbf x=(\mathcal x_1,\cdots,\mathcal x_N)^Tx=(x1,⋯,xN)T,相应的观测值为 t=(t1,⋯ ,tN)T\mathbf t=
2022-01-12 14:25:44
12008
1
原创 numpy的随机数操作——random模块
其随机数生成方式利用的是梅森旋转算法生成的伪随机数。相比于python标准库的random模块,numpy中的包含更多的分布以供选择。随机数生成器生成器种子设置seed(self, seed=None)生成器内部状态get_state()生成器内部状态设置:set_state(state)参数:state :——有两种数据类型可选{tuple(str, ndarray of 624 uints, int, int, float), dict},具体不做描述。各种分布当需
2022-01-11 19:40:50
1132
原创 基于类的概率密度函数的可分性判据
首先考虑两类问题,看一个一维的两类概率分布:其中,(a)中的两类是完全可分的;(b)是完全不可分的。基于类的概率密度函数的可分性判据可用两类概率密度函数的重叠程度来度量可分性,构造基于类概率密度的可分性判据,重叠程度是指两个类概率密度函数相似的程度。基于类概率密度函数构造可分性判据 JpJ_pJp 时, JpJ_pJp 应当满足:(1) Jp>0J_p>0Jp>0;(2)当两类概率密度函数完全不重叠时, Jp=maxJ_p=maxJp=max 达到最大;(3)当两类
2022-01-02 20:34:52
1111
原创 特征提取与选择
模式识别中,分类识别的正确率取决于对象的表示、训练学习和分类识别算法,特征提取与选择问题是对象表示的一个关键问题。基于可分享度量的特征提取与选择通常在得到实际对象的若干具体特征之后,再由这些原始特征产生出对分类识别最有效、数目最少的特征,这就是特征提取与选择的任务。从本质上讲,我们的目的是使在最小维数特征空间中异类模式点相距较远(类间距离较大),而同类模式点相距较近(类内距离较小)。 实现特征提取与选择有两个基本途径:(1)直接选择法:当实际用于分类识别的特征数目d 确定后,直接从已获得的 n 个原始
2022-01-02 10:48:35
668
原创 从机器学习到深度学习
传统机器学习解决问题的一般思路为:数据获取→\to→ 预处理→\to→ 特征提取(表达)→\to→ 特征选择→\to→ 推理、预测、识别其中的 特征提取(表达) 部分对最终的算法准确性起着非常关键性的作用,而系统主要的计算和测试工作都消耗在这一部分。但实际中这一部分一般都是人工完成的,即人工提取特征。手工提取特征费力且需要经验、专业知识和运气,难以得到好的特征,因此思考让计算机自动学习特征,即 深度学习。人脑视觉机理近几十年以来,认知神经科学、生物学等学科的发展促进了人工智能的发展。而关于人的视觉
2022-01-01 16:35:09
2211
原创 模式识别——特征提取(表达)
特征表达特征特征是机器学习系统的原材料,对最终模型的影响是毋庸置疑的;如果数据被很好地表达成了特征,通常线性模型就能达到满意的精度。关于特征,需要考虑以下三方面:(1)特征表示的粒度需要考虑,模型在一个什么程度上的特征表示,才能发挥效果?以图片为例,像素级的特征完全没有价值,从中得不到任何可用于分类或识别的信息。当特征具有结构性(有意义)的时候,算法才能起作用,即将输入空间通过某种规则映射到特征空间,使得有助于分类。如下图所示,当可以判断是否有车把手,是否有车轮,就可以很容易的把摩托车和非摩托车区
2022-01-01 14:07:58
2581
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人