Code Planet

为了发现更大的世界


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

感知器神经网络学习和训练

发表于 2014-05-06 | 更新于 2015-08-15 | 分类于 ANNs

感知器学习规则:

训练感知器,对每一个输入向量做出响应,输出0或1。当解存在时,该学习规则被证明是能在有限时间内收敛到某个解的。
b = b + [ T - A ] W(i) = W(i) + [ T - A ] * P(i)
式中, W 是权值向量, P输入向量, T是期望输出, A 是实际输出, b是偏置。
>> net = newp([-1 1;-1 1],1); >> P = [-0.5 -0.5 0.5 -0.1;-0.5 0.5 -0.5 1]; >> T = [1 1 0 0]; >> plotpv(P,T); % 画出PT坐标 >> plotpc(net.IW{1},net.b{1}); % 画出线
>> net.adaptParam.passes = 3; % 修正3次通过 >> net = adapt(net,P,T); >> hold on >> plotpc(net.IW{1},net.b{1}); >> plotpv(P,T); >> p = [0.7; 1.2]; >> a = sim(net ,p); >> plotpv(p,a) >> hold on; >> plotpv(P,T); >> plotpc(net.IW{1},net.b{1}); >> hold off;
训练结果能够正确分类:
![](http://codeplanet-wordpress.stor.sinaapp.com/uploads/2014/05/wpid-06c8adb0313076e053593b127090ef3e_72851328.png)

Matlab构建感知器神经网络

发表于 2014-05-06 | 更新于 2015-08-15 | 分类于 ANNs

1.构建

使用newp函数
功能: 创建一个感知器神经网络的函数 格式: net = newp(PR,S,TF,LF) 说明: net为生成的感知机神经网络;PR为一个R2的矩阵,由R组输入向量中的最大值和最小值组成;S表示神经元的个数;TF表示感知器的激活函数,缺省值为硬限幅激活函数hardlim;LF表示网络的学习函数,缺省值为learnp 。 hardlim: 硬限幅激活函数,A = hardlim(N) 。 函数hardlim(N)在给定网络的输入矢量矩阵N时,返回该层的输出矢量矩阵A。当N中的元素大于等于零时,返回的值为l;否则为0。也就是说,如果网络的输入达到阈值,则硬限幅传输函数的输出为1;否则,为0。 learnp: 感知机的权值和阈值学习函数
2.实验
>> net = newp([-2 2;-2 2],1) %创建一个神经元,输入为二维,大小都是-2~2net = Neural Network object: architecture: numInputs: 1 numLayers: 1 biasConnect: [1] inputConnect: [1] layerConnect: [0] outputConnect: [1] targetConnect: [1] numOutputs: 1 (**read**-only) numTargets: 1 (**read**-only) numInputDelays: 0 (**read**-only) numLayerDelays: 0 (**read**-only) subobject structures: inputs: {1x1 cell} of inputs layers: {1x1 cell} of layers outputs: {1x1 cell} containing 1 output targets: {1x1 cell} containing 1 target biases: {1x1 cell} containing 1 bias inputWeights: {1x1 cell} containing 1 input weight layerWeights: {1x1 cell} containing no layer weights functions: adaptFcn: 'trains' initFcn: 'initlay' performFcn: 'mae' trainFcn: 'trainc' parameters: adaptParam: .passes initParam: (none) performParam: (none) trainParam: .epochs, .goal, .show, .time weight and bias values: IW: {1x1 cell} containing 1 input weight matrix LW: {1x1 cell} containing no layer weight matrices b: {1x1 cell} containing 1 bias vector other: userdata: (user stuff)
>> net.IW{1,1} = [-1 1]; % w1,1 设置
>> net.b{1} = [1]; % b1 设置
>> p1 = [1;1]; % p1 输入 >> a1 = sim(net,p1) % 运行a1 = 1 % 输出结果
a = hardlim(wp+b)
计算p1输入时
wp+b = [-1 1][1;1]+1 = 1
hardlim(1) = 1
所以输出为1

VS2010编译64位版本QT

发表于 2014-05-05 | 更新于 2015-08-15 | 分类于 qt
1\. 下载,直接找官网下载就可以了。我的是qt-win-opensource-4.8.5-vs2010.exe;
2\. 设置环境变量:
我的电脑> 属性> 高级> 环境变量> 用户变量里面设置几个变量:
path中增加C:\Qt\4.8.5\bin(如果没有就创建)
创建qmakespec值为 win32-msvc2010
创建qtdir值为 C:\Qt\4.8.5\
最后为了使的你刚才修改的环境变量生效,重启cmd,可以通过c:\> qmake -v来看你使用的qt版本。
3\. 点击 开始->Microsoft Visual Studio 2008->Visual Studio Tools->Visual Studio 2008 x64 Win64 Command Prompt
现在开始安装
首先进入你所在的Qt openresource 所在的文件夹
例如:C:\Qt\4.8.5\bin
C:\Qt\4.8.5\bin>configure -no-stl -no-dsp -vcproj
此时会有一个选项 是选择商业版还是开源版,此处要选择开源版,
只需输入o 然后 回车 此过程时间大概几分钟
接下来就开始
C:\Qt\4.8.5\bin>nmake
最后这个过程时间较长,需要两三个小时

热爱生命

发表于 2014-04-17 | 更新于 2015-08-15 | 分类于 poem

热爱生命

—-汪国真

我不去想,
是否能够成功,
既然选择了远方,
便只顾风雨兼程。

我不去想,
能否赢得爱情,
既然钟情于玫瑰,
就勇敢地吐露真诚。

我不去想,
身后会不会袭来寒风冷雨,
既然目标是地平线,
留给世界的只能是背影。

我不去想,
未来是平坦还是泥泞,
只要热爱生命,
一切,都在意料之中。

cxfreeze打包Python

发表于 2014-04-06 | 更新于 2015-08-15 | 分类于 python

安装过程不赘述

打包命令如下:
cxfreeze c:\main.py --target-dir c:\dir --base-name=win32gui
注意:
1、将exe放到其他机子上运行,弹出“找不到msvcr100.dll“。手动将”msvcr100.dll“拷贝到dist目录下即可。可以写个脚本把这些都包含进去
2、要去掉exe里的后面黑色控制台窗口就在前面的命令改成
cxfreeze D:\source\game1.0.py(需打包文件路径) --target-dir D:\a(存放exe的目标文件夹路径)--base-name=win32gui

vim设置c开发环境

发表于 2014-03-27 | 更新于 2015-08-15 | 分类于 Tools

1**、配置文件的位置**

在目录 /etc/ 下面,有个名为**vimrc**的文件,这是系统中公共的vim配置文件,对所有用户都有效。而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“**.****vimrc**”。例如,/root目录下,通常已经存在一个**.****vimrc**文件。
** **
**2****、设置语法高亮显示**
1) 打开vimrc,添加以下语句来使得语法高亮显示:
syntax on
2) 如果此时语法还是没有高亮显示,那么在/etc目录下的profile文件中添加以下语句:
export TERM=xterm-color
**3****、设置****Windows****风格的****C/C++****自动缩进(添加以下****set****语句到****vimrc****中)**
>
1)设置(软)制表符宽度为4:
> > >
set tabstop=4
> > >
set softtabstop=4
> >
2)设置缩进的空格数为4
> >
set shiftwidth=4
> >
3)设置自动缩进:即每行的缩进值与上一行相等;使用 noautoindent 取消设置:
> >
set autoindent
> >
4)设置使用 C/C++ 语言的自动缩进方式:
> >
set cindent
> >
5)设置C/C++语言的具体缩进方式(以我的windows风格为例):
> >
set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s
> >
6)如果想在左侧显示文本的行号,可以用以下语句:
> >
set nu
> >
7)最后,如果没有下列语句,就加上吧:
> >
if &term=="xterm"
> >
set t_Co=8
> >
set t_Sb=^[[4%dm
> >
set t_Sf=^[[3%dm
> >
endif
> >

vtk拦截事件并处理

发表于 2014-03-13 | 更新于 2015-08-15 | 分类于 vtk
有两种方式:
1.当做一般类进行处理;
2.继承系统提供的interactorstyle类,并重写相应的处理方法或者自定义方法。
#**include** <vtkPolyDataMapper.h> #**include** <vtkObjectFactory.h> #**include** <vtkCommand.h> #**include** <vtkActor.h> #**include** <vtkSmartPointer.h> #**include** <vtkRenderWindow.h> #**include** <vtkRenderer.h> #**include** <vtkRenderWindowInteractor.h> #**include** <vtkInteractorStyle.h> #**include** <vtkPolyData.h> #**include** <vtkSphereSource.h> #**include** <vtkInteractorStyleTrackballCamera.h> // 一般类 **class** MyClass { **public**: **void** KeypressCallbackFunction(vtkObject* caller, **long** **unsigned** **int** eventId, **void*** callData ) { std::cout << "Caught event in MyClass" << std::endl; } }; // 继承自interactorstyle的类 **class** MyInteractorStyle : **public** vtkInteractorStyleTrackballCamera { **public**: **static** MyInteractorStyle* New(); vtkTypeMacro(MyInteractorStyle, vtkInteractorStyleTrackballCamera); **void** KeypressCallbackFunction(vtkObject* caller, **long** **unsigned** **int** eventId, **void*** callData ) { std::cout << "Caught event in MyInteractorStyle" << std::endl; } }; vtkStandardNewMacro(MyInteractorStyle); **int** main(**int**, **char** *[]) { // Create a sphere vtkSmartPointer<vtkSphereSource> sphereSource = vtkSmartPointer<vtkSphereSource>::New(); sphereSource->SetCenter(0.0, 0.0, 0.0); sphereSource->SetRadius(5.0); sphereSource->Update(); vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New(); mapper->SetInputConnection(sphereSource->GetOutputPort()); // Create an actor vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New(); actor->SetMapper(mapper); // A renderer and render window vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New(); vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New(); renderWindow->AddRenderer(renderer); // An interactor vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New(); renderWindowInteractor->SetRenderWindow(renderWindow); MyClass myClass;
//直接将对象绑定到interactor上 renderWindowInteractor->AddObserver(vtkCommand::KeyPressEvent, &myClass, &MyClass::KeypressCallbackFunction); MyInteractorStyle* style = MyInteractorStyle::New();
//将interactorstyle引用绑定到interactor上 renderWindowInteractor->AddObserver(vtkCommand::KeyPressEvent, style, &MyInteractorStyle::KeypressCallbackFunction); vtkSmartPointer<MyInteractorStyle> style2 = vtkSmartPointer<MyInteractorStyle>::New(); renderWindowInteractor->AddObserver(vtkCommand::KeyPressEvent, style2, &MyInteractorStyle::KeypressCallbackFunction); renderer->AddActor(actor); renderer->SetBackground(1,1,1); // Background color white renderWindow->Render(); renderWindowInteractor->Start(); style->Delete(); **return** EXIT_SUCCESS; }

ubuntu安装g++

发表于 2014-03-11 | 更新于 2015-08-15 | 分类于 linux

使用g++编译c++程序,出现错误:

g++: error trying to exec ‘cc1plus’: execvp: 没有那个文件或目录

这是Ubuntu 发行版里面不带g++

直接重新安装有源的问题。参见前篇。

安装gcc和g++及一些依赖包的命令:

sudo apt-get install build-essential

sudo apt-get install g++

ubuntu更新源

发表于 2014-03-11 | 更新于 2015-08-15 | 分类于 linux

1、首先备份源列表(有备无患)
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

2、修改更新源

sudo vim /etc/apt/sources.list

3、添加源地址

4、启用更新地址

sudo apt-get update

阅读全文 »

VTK中GetOutput()和GetOutputPort()区别

发表于 2014-01-17 | 更新于 2015-08-15 | 分类于 vtk

VTK的数据流采用流水线(pipeline)作业方式。但是在接口的时候有两种数据格式一种是使用GetOutput(),另外一种是使用GetOutputPort()

这两种输出有什么分别呢?
**举例说明:**
vtkDICOMImageReader对象拥有方法GetOutput()和GetOutputPort(),它的继承关系如下图。继承了vtkImageAlgorithm。
![Inheritance graph](http://codeplanet-wordpress.stor.sinaapp.com/uploads/2014/01/wpid-40fa07a338bda1eba9fdde5b65b38eb2_classvtkDICOMImageReader__inherit__graph1.png)
在vtkAlgorithm中GetOutput()如下定义:
vtkImageData* GetOutput();
可知输出格式是vtkImageData类型;
另外GetOutputPort()在类vtkImageAlgorithm中定义如下:
vtkAlgorithmOutput* GetOutputPort()
{ **return** **this**->GetOutputPort(0);
}
可知输出格式是vtkAlgorithmOutput类型
而vtkAlgorithm和vtkImageAlgorithm类的关系如下:
![Collaboration graph](http://codeplanet-wordpress.stor.sinaapp.com/uploads/2014/01/wpid-40fa07a338bda1eba9fdde5b65b38eb2_classvtkImageAlgorithm__coll__graph1.png)
vtkImageAlgorithm是继承了vtkAlgorithm的;
再看看vtkImageData的解释:
vtkImageData是vtkDataSet具体实现一个数据对象。vtkImageData可以表示一个拓扑或者几何点阵的几何数据结构。
![Inheritance graph](http://codeplanet-wordpress.stor.sinaapp.com/uploads/2014/01/wpid-40fa07a338bda1eba9fdde5b65b38eb2_classvtkImageData__inherit__graph1.png)
看看vtkAlgorithmOutput的解释:
vtkAlgorithmOutput是由vtkAlgorithm的GetOutputPort方法返回的是一个代理对象。经常被传递给另一个vtkAlgorithm类的SetInputConnection或者AddInputConnection或者RemoveInputConnection方法,以建立通道连接。
![Inheritance graph](http://codeplanet-wordpress.stor.sinaapp.com/uploads/2014/01/wpid-40fa07a338bda1eba9fdde5b65b38eb2_classvtkAlgorithmOutput__inherit__graph1.png)
参考】:
[1][http://www.vtk.org/doc/release/5.10/html/classvtkImageData.html](http://www.vtk.org/doc/release/5.10/html/classvtkImageData.html)
[2][http://www.vtk.org/doc/release/5.10/html/classvtkAlgorithm.html#a278ce83f371e6a398cf46f4600108d3e](http://www.vtk.org/doc/release/5.10/html/classvtkAlgorithm.html#a278ce83f371e6a398cf46f4600108d3e)
[3][http://www.vtk.org/doc/release/5.10/html/classvtkImageAlgorithm.html](http://www.vtk.org/doc/release/5.10/html/classvtkImageAlgorithm.html)
[4][http://www.vtk.org/doc/release/5.10/html/classvtkDataObject.html](http://www.vtk.org/doc/release/5.10/html/classvtkDataObject.html)
[5][http://www.vtk.org/doc/release/5.10/html/classvtkAlgorithmOutput.html](http://www.vtk.org/doc/release/5.10/html/classvtkAlgorithmOutput.html)
[6][http://www.vislab.cn/bbs/archiver/?tid-2656.html](http://www.vislab.cn/bbs/archiver/?tid-2656.html)
[7][http://vtk.1045678.n5.nabble.com/difference-between-GetOutputPort-and-GetOutput-td1250681.html](http://vtk.1045678.n5.nabble.com/difference-between-GetOutputPort-and-GetOutput-td1250681.html)
[8][http://www.vislab.cn/bbs/archiver/?tid-97.html](http://www.vislab.cn/bbs/archiver/?tid-97.html)
1…789…12
Lu Xiaohua

Lu Xiaohua

116 日志
33 分类
86 标签
GitHub E-Mail
© 2019 Lu Xiaohua
由 Hexo 强力驱动 v3.8.0
|
主题 – NexT.Muse v7.0.0