㈠ 数学排列组合中 那个Cnn Pnn 还有Ann 是什么意思
P和A是一样的,都是排列,P是旧用法,现在教材上多用A,从M个元素取N个进行排列,就是说取出来N个之后,这N个还要排序,求得是排序的种数。
C是组合,就是只从M个里头取N个,不排序,求得是取的种数。
A和C的关系就是Amn=Cmn×n!,其中的n!也就是N个数排列的种数,也就是他俩的区别。
Cnn=1 n个里选n个的组合只有一种。
Pnn=Ann=n!
㈡ C0n+C1n+C2n+……+Cnn=2^n 是什么公式,请用具体数字举个栗子,谢谢
这个是二项式定理来的。二项式定理高中书里有的,如下:
望采纳,谢谢
㈢ 如何将cnn模型放到服务器上运行
一、模型加载
用已经训练好的模型来检测,rcnn_model_file指模型路径。
二、候选区域提取(Region proposals)
本论文采用selective search[3]方法生成候选区域,代码作者以给出,rcnn代码中的selective_search_boxes.m是根据selective search源代码中的demo.m修改的,参数im是矩阵图,不是图片路径,最后输出格式为N * 4的矩阵,N表示region proposals 的个数,每行表示一个region proposal对角线坐标。
三、特征提取(Feature extraction)
使用rcnn_features为每一个region proposals提取cnn特征,输出结果为N * 4096,每行表示一个region proposal的特征。
四、分类(classification)
调用下面函数为每一个region proposal计算各类的score,结果为N * C 矩阵,C表示物体类别个数,每行表示一个region proposal对应各个类别的score。
㈣ 高中数学排列C0n(上0下n)一直加到Cnn,为什么等于2∧n
组合的方法证明:
设有n个小球放到两个不同的盒子中,盒子可以为空。
若对小球进行讨论,每个小球有两个选择,共有2^n种放法。
若用分类原理,一号盒子中没有小球的放法有cn0种,有一个小球的放法有cn1种,有两个小球的放法有cn2种,有n个小球的放法有cnn种,共有放法cn0+cn1+cn2+…+cnn种显然,两种方法得到的结果相同,所以有cn0+cn1+cn2+…+cnn=2^n。
排列的定义:
从n个不同元素中,任取m(m≤n,m与n均为自然数,下同)个元素按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列;从n个不同元素中取出m(m≤n)个元素的所有排列的个数,叫做从n个不同元素中取出m个元素的排列数,用符号 A(n,m)表示。
计算公式:
此外规定0!=1(n!表示n(n-1)(n-2)...1,也就是6!=6x5x4x3x2x1。
组合的定义:从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合;从n个不同元素中取出m(m≤n)个元素的所有组合的个数,叫做从n个不同元素中取出m个元素的组合数。用符号 C(n,m) 表示。
㈤ linux 如何运行benchmark循环跑
Linux 如何运行benchmark循环跑如下
benchmark中包含了跑benchmark的源码benchncnn.cpp,感兴趣的可以先看一下里面的内容。在Linux的文件根目录下,新建一个build文件夹并进入,当然也可以不叫build,随便你自己起。mkdir build && cd build进入之后就可以进行编译了,编译之后在build文件夹下会生成一个叫benchmark的文件夹,之后的工作会在这里进行。编译用的是cmake,这里如果有问题的话可以注意一下cmake的版本,我用的版本是3.12.3。具体命令如下:cmake .
make -j8这里cmake编译实际上是要根据上一层文件夹的CMakeLists.txt的文本来的,这里的..其实就是表示的上一层文件夹。 Make -j后面的数字是开几个核,根据自己电脑的实际情况来。执行完成之后就可以看到build里有了benchmark的文件夹。
入这个文件夹,可以看到一个benchncnn的可执行文件已经编译好了,运行这个可执行文件就可以测试模型的速度。但是这个可执行文件默认的是找到当前文件夹下的param格式的文件。
所有自带的模型文件都在ncnn根目录下的benchmark的文件夹中,把里面所有的param文件都拷贝到现在的benchmark文件夹,然后执行如下命令./benchncnn 4 2 0 -1
第一个数字表示测试次数,第二个表示开的线程数(这一点ncnn做的不错),最后一个数字-1表示只测cpu。NCNN交叉编译到rk3288(armv7架构)和rk3399(armv8架构)的方法。
㈥ 怎么在windows下编译fast rcnn需要的python版本的caffe接口
一、前期环境以及准备
1、安装python
在caffe中,python2和python3的接口都有。但frcnn中只能支持python2.7,所以千万不要装成python3。为了方便,不用自己去pip一大堆库,我建议安装anaconda2,里面已经安装了很多第三方的库。
另附python,Windows的第三方库 ,里面很全。或许有一些库你要去官网上下载。
2、安装(更新)显卡驱动和cuda
NVIDIA的显卡驱动安装应该不用我说了吧,到官网上下载吧。我要说明一点的是,我的1080ti在安装显卡驱动时,说和Windows不匹配。怎么解决呢?更新Windows,到官网上下驱动,再安装。成功!还有就是记得更新你的显卡驱动,以防老的驱动不支持cuda。
CUDA安装的话,也是傻瓜试的安装。提醒一点的是,不要改变他的安装路径,默认路径。然后去NVIDIA的官网上下载cudnn库,这个库的话需要去NVIDIA注册一个账号,然后问你用这个来完成什么工作之类的巴拉巴拉。这个库长什么样呢?下载完解压缩,得到一个cuda的文件夹,里面有3个文件夹
然后打开你的CUDA文件夹,默认路径是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0
把cudnn库里面的3个文件夹里面的文件,分别加到cuda里面对应的文件夹。
然后打开cuda需要编译的部分,默认路径是C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0
因为我用的VS2015,那么我就用打开2015的那个,然后改成release运行。
至此,显卡计算的环境就搭建完成了。
3、cmake和git
cmake的话,我建议直接下载编译好的能运行的文件(到官网上下载),然后解压文件,把bin的路径添加到Path中。
git:因为frcnn里面有很多linux的脚本,你可以不用,但用的话会很方便的。所以我建议安装git。同样,傻瓜式的安装,直接到官网上下载。
二、py-faster-rcnn
1、编译caffe的python接口GPU版本(如果你编译过了就不用了)
因为frcnn的编译过程用需要用到python的caffe包,所以必须要先编译一次caffe。如果你已经编译过caffe的py接口就不用了。
下载微软的Caffe,git的地址
你可以用git直接下载,或者在git的地址里下载,随便你。
[plain] view plain
git clone
cd caffe
git checkout windows
打开caffe\scripts,然后编辑build_win.cmd文件
第7行的VERSION是你VS的版本,VS2015对应的是14,VS2013对应的应该是12;第8行改为0;第9行改为0(如果你不用GPU,那就还是1);13行的python_version是你的python版本,2.x就是2,3.x就是3;24,28行是你的python的安装目录,如果你是anaconda就改你的anaconda的目录,否则就不改。
同样69-95行同样修改。以上2张图是我的cmake文件配置。
进入caffe\scripts,打开cmd,直接执行build_win.cmd。注意他会自动下载需要的库,因为服务器呢都不在国内,所以我建议挂个VPN,不然你且等呢吧。
这样cmake后呢,python的接口就已经编译好了,不用再编译一遍了。把caffe\python下的caffe的文件夹到python的第三方包的文件夹就ok。
这样caffe的python接口就好了,你可以进cmd的python试一下import caffe。如果说,他提示少了什么包,你直接pip这个包就好了,找不到的话,网络一下就有。但只要你跟着上面我的方法做应该不会出现什么问题。
2、编译py-faster-rcnn依赖库
首先呢,我们先去编译一下frcnn的依赖库。Windows下,不能使用自带的lib,把自带的lib删了,重新下载,这里给出git的地址。
好了,现在你的库应该长成这样,有setup.py和setup_cuda.py。进cmd,install这2个文件。
现在你肯定会遇到问题,提示你VC版本不对
怎么办呢,先set一下:输入SET VS90COMNTOOLS=%VS140COMNTOOLS%,VS后面的数字就是你的版本。还有不要忘了把你VS的c1.exe加到path下。
编译好frcnn的依赖库后,应该是这个样子的。
3、给caffe加frcnn的层
现在,我们再下载一个caffe,跟前面一样,把build_win.cmd进行修改。然后我们就可以把frcnn的一些特有的层加到caffe里编译了。
1)添加层和文件
打开py-faster-rcnn\caffe-fast-rcnn\src\caffe\layers文件夹,找到4个文件分别为
然后到你新的caffe的对应文件夹caffe\src\caffe\layers里。
接着我们添加头文件,打开py-faster-rcnn\caffe-fast-rcnn\include\caffe,把fast_rcnn_layers.hpp这文件到caffe的对应文件夹下caffe\include\caffe。
2)配置2个新层
打开你的caffe\src\caffe\proto下的caffe.proto,进行编辑。
在407行左右
往原来的文件里添加新的层的配置信息
[plain] view plain
optional ROIPoolingParameter roi_pooling_param = 8266711;
optional SmoothL1LossParameter smooth_l1_loss_param = 8266712;
message ROIPoolingParameter {
// Pad, kernel size, and stride are all given as a single value for equal
// dimensions in height and width or as Y, X pairs.
optional uint32 pooled_h = 1 [default = 0]; // The pooled output height
optional uint32 pooled_w = 2 [default = 0]; // The pooled output width
// Multiplicative spatial scale factor to translate ROI coords from their
// input scale to the scale used when pooling
optional float spatial_scale = 3 [default = 1];
}
message SmoothL1LossParameter {
// SmoothL1Loss(x) =
// 0.5 * (sigma * x) ** 2 -- if x < 1.0 / sigma / sigma
// |x| - 0.5 / sigma / sigma -- otherwise
optional float sigma = 1 [default = 1];
}
3)cmake新的caffe的python接口
就是再执行一遍build_win.cmd就行。编译好之后,把caffe根目录下的python文件夹替换py-faster-rcnn\caffe-fast-rcnn的python文件夹。
三、demo
完成以上步骤你的py-faster-rcnn就已经编译成功了。如果你想用demo测试一下的话可以用.\data\scripts里的脚本去下载已经训练好的model,文件挺大的、速度挺慢的。所以给大家提供一个网络5,把caffemodel文件放在data\faster_rcnn_models,然后执行tools\demo.py就能看到结果了
㈦ texcnn着作
《深入TextCNN》系列文章是结合PyTorch对TextCNN从理论到实战的详细教程。
对于文本分类问题,常见的方法无非就是抽取文本的特征,比如使用doc2evc或者LDA模型将文本转换成一个固定维度的特征向量,然后在基于抽取的特征训练一个分类器。 然而研究证明,TextCnn在文本分类问题上有着更加卓越的表现。从直观上理解,TextCNN通过一维卷积来获取句子中n-gram的特征表示。TextCNN对文本浅层特征的抽取能力很强,在短文本领域如搜索、对话领域专注于意图分类时效果很好,应用广泛,且速度快,一般是首选;对长文本领域,TextCNN主要靠filter窗口抽取特征,在长距离建模方面能力受限,且对语序不敏感。
㈧ 如何把cnn分类程序变为回归程序
你要看你的图像是什么。如果是彩色数字,先转成灰度。用MNIST训练网络。如果是各种主题,用彩色的imageNET训练。如果你的数据量大到足以与数据集媲美,那么直接用你的数据训练网络即可。
在流行的数据集上训练完,你需要固定卷积池化层,只训练后面的全连接层参数,用你自己的数据集。
CNN一是调整网络结构,几层卷积几层池化,卷积的模板大小等。而是在确定结构上调整参数,weight scale,learning rate,reg等。
你用CNN做图像分类,无非是把CNN当成学习特征的手段,你可以吧网络看成两部分,前面的卷积层学习图像基本-中等-高层特征,后面的全连接层对应普通的神经网络做分类。
需要学习的话,首先你去看UFLDL教程。然后cs231n
与其问别人,首先你看了imageNet数据集了吗?
对于把流行数据集与自己数据混合训练模型的方法。如果两种数据十分相似,也未尝不可。但是对于流行数据集而言,自己的标注数据量一般不会太大,如果是1:1000,1:100这种比例,那么可能不加自己的数据,完全用数据集训练的模型就能得到一个还好的结果。
如果自己的数据和数据集有些差别,那混在一起我认为自己的是在用自己的数据当做噪声加到数据集中。cnn认为图像是局部相关的,而欺骗CNN的方法则主要出于,自然图像分布在一种流形结构中,训练的模型需要这种流形假设,而人工合成的图像由于添加非自然噪点,不满足模型假设,所以能用肉眼难分辨的噪声严重干扰分类结果。
如果二者相差过大,数据集是一种分布,你的数据是另一种,放到一起训练,我没试过,但我认为结果不会太好。
这时候只能把数据集用来训练cnn的特征提取能力。而后用于分类的全连接层,视你的数据量调整规模。
㈨ 文本分类用cnn还是rnn
这里面有几个关键点:一个是文本跟图片不一样,图片有长宽,然后还有深度(RGB)。对应到文本上,假设文章总共N个词,每个词嵌入维度K维,那么输入是N * K的,N可以理解为高度,K作为长度,深度为1。那么卷积的时候的特征抽取器(filter)高度h一般设置多大呢?一般可以从3开始
㈩ cnn+ctc的实验,如何利用tensorflow的ctc_loss去实现
batch为10意思是你一个批次计算10个数据样本,每一个数据样本的形式应该是m*n的矩阵,所以你的实际输入是10*m*n的三维矩阵,其中m为time_step,n为feature_num;经过卷积和全连接后你的输出是10*p*q,其中q表示m经过卷积运算后得到的time_step,可能等于m也可能不等于,看你的卷积核设置。q为num_classes,最后一层的全连接是输出层,用来做分类的,num_classes就是数据集对应的类别数(实际类别 + 1个空白类 )