Hopfield神经网络使用说明。

该神经网络有两个特点:

1,输出值只有0,1

2,Hopfield没有输入(input)

这里解释一下第二个特点,什么叫没有输入?因为在使用Hopfield网络的时候,多用于图像仿真,图像仿真意思就是先给你一些标准的图像,

比如1~9的数字,然后用一些别的测试图像(模糊不清,让人识别基本靠半猜半看)去逼近标准图像。而所谓的没有输入,意思就是指,你输入的图像就是

输出结果,那么Hopfield就认为没有输入。MATLAB官方说明:Since Hopfield networks have no inputs……balabala

接着我们实际使用该神经来仿真数字图片,例子运用网络上的识别“1,2”的例子,但具体解释为原创,也在这里摒弃一些网上以讹传讹的错误解释。

Hopfield调用流程:

1 newhop()
函数功能:创建一个离散型Hopfield网络。
调用格式:net=newhop(T);

这里T代表输出,上文解释过,为什么T不是输入,T代表M*N的矩阵

2,sim()函数

% 调用格式:[Y,Af,E,perf] = sim(net,P,[],Ai,T)
% [Y,Af,E,perf] = sim(net,{Q TS},Ai,T)
%
% P,Q:测试向量的个数;
% Ai:初始的层延时,默认为0;
% T:测试向量;
% TS:测试的步数;
% Y:网络的输出矢量;
% Af:训练终止时的层延迟状态;
% E:误差矢量;
% perf:网络的性能。

这是摘自网络的解释,显然不够明确,我们用matlab是help例子说明。

Here we create a Hopfield network with two three-element
stable points T.
创建T的Hopfield网络
T = [-1 -1 1; 1 -1 1]';
net = newhop(T);

Below we check that the network is stable at these points by
using them as initial layer delay conditions. If the network is
stable we would expect that the outputs Y will be the same.
(Since Hopfield networks have no inputs, the second argument
to SIM is Q = 2 when using matrix notation).
我们用初始化数据检查构建的网络,如果网络是稳定的,则我们输出的Y就是输入的Y。
Ai = T;
[Y,Pf,Af] = sim(net,2,[],Ai);
Y

补充,sim的四个参数:

net——表示newhop建立的网络

2——表示T的列数(样本维度),这里的T是转置后的4*2维

[]——表示输入的T是矩阵形式

Ai——需要仿真的数据,这里表示用原数据测试

ps:用矩阵形式,默认神经元是一层,即Ts步长为1

接下来我们要调用多步长的方法。
To see if the network can correct a corrupted vector, run
the following code which simulates the Hopfield network for
five timesteps. (Since Hopfield networks have no inputs,
the second argument to SIM is {Q TS} = [1 5] when using cell
array notation.)
用多步长的方法,就必须要用matlab的胞元结构(cell)

这里说明一下胞元的用法:

X={x1,x2,x3……},xi可以为任何数据,也可以是cell

调用X(1)表示取到x1,可以理解为取到了一个对象;而X{1}则是x1的具体值(http://jingyan.baidu.com/article/20095761997932cb0721b485.html)

Ai = {[-0.9; -0.8; 0.7]};
[Y,Pf,Af] = sim(net,{1 5},{},Ai);
Y{1}
参数说明:

Ai——把3*1的向量封装为cell结构

{1,5}——1表示Ai的维度1,5表示用步长5,即5层神经元

{}——表示告诉函数,数据以cell格式传递进来

Ai——用原数据测试网络

重要说明sim仿真函数是横向仿真,就是以列数为仿真单位,例如在下文代码中T是数字“1“,”2”的图片合并,图片格式为12*10,合并后为24*10.

但在仿真前,由于仿真方向按照列为单位,需要转置为10*24,可以形象理解把图片横放后排列。

因此,在设置维度以12(一幅图)为单位。

函数介绍完毕,来分析一下网上给出的数字识别代码:

% ------------------------------number array---------------------------------
one=[- - - - - - - - - -;...
- - - - - - - -;- - - - - - - -;...
- - - - - - - -;- - - - - - - -;...
- - - - - - - -;- - - - - - - -;...
- - - - - - - -;- - - - - - - -;...
- - - - - - - -;- - - - - - - -;...
- - - - - - - - - -];
two=[- - - - - - - - - -;...
- -;- -;...
- - - - - - - -;- - - - - - - -;...
- -;- -;...
- - - - - - - -;- - - - - - - -;...
- -;- -;...
- - - - - - - - - -];
% --------------------------plot standard number figure--------------
subplot(,,)
imshow(imresize(one,))
title('standard number') subplot(,,)
imshow(imresize(two,))
title('standard number')
% ---------------------------creat hopfield net---------------------
T=[one;two]';
net=newhop(T);
% --------------------------generate rand noise------------------
for i=:
for j=:
a=rand;
if a<=0.1
one(i,j)=-one(i,j);
two(i,j)=-two(i,j);
end
end
end
noise_one=one
noise_two=two
% -------------------------plot noise figure----------------------------
subplot(,,)
imshow(imresize(noise_one,))
title('noise number') subplot(,,)
imshow(imresize(noise_two,))
title('noise number')

上述代买为显示图片和加入噪声后显示图片,没什么分析的必要。

% ------------------------plot identify figure---------------------------
noise1={(noise_one)'};%把图变为cell结构,并转置(横放图片排列)
tu1=sim(net,{,},{},noise1);%每12像素为一张图subplot(,,)
%转回图片并显示,这里补充一下,{3}表示有三层神经网络输出,取第三层输出值
imshow(imresize(tu1{}',20))%放大20倍
title('identify number') noise2={(noise_two)'};
tu2=sim(net,{,},{},noise2);
tu2{}'
subplot(,,)
imshow(imresize(tu2{}',20))
title('identify number')

延展:其实根据sim函数的说明,以下两端代码效果是一样的,但用cell只能是一层神经网络

%用cell
noise1={(noise_one)'};
tu1=sim(net,{,},{},noise1);
%tu1{}'
subplot(,,)
imshow(imresize(tu1{}',20))
title('identify number')
%用矩阵
noise1=(noise_one)';
tu1=sim(net,,[],noise1);
%tu1{}'
subplot(,,)
imshow(imresize(tu1',20))
title('identify number')

神经网络hopfield的学习的更多相关文章

  1. (转)神经网络和深度学习简史(第一部分):从感知机到BP算法

    深度|神经网络和深度学习简史(第一部分):从感知机到BP算法 2016-01-23 机器之心 来自Andrey Kurenkov 作者:Andrey Kurenkov 机器之心编译出品 参与:chen ...

  2. 【译】神经网络与深度学习 Ch1-Section0

    用神经网络识别手写数字 人类的视觉系统是是大自然的奇迹.考虑下面手写数字序列: 大多数人能够轻易地是识别出是504192.在我们大脑的每个半球都有一个基础的皮质,这就是我们熟知的V1区,它包含了14亿 ...

  3. [DeeplearningAI笔记]神经网络与深度学习人工智能行业大师访谈

    觉得有用的话,欢迎一起讨论相互学习~Follow Me 吴恩达采访Geoffrey Hinton NG:前几十年,你就已经发明了这么多神经网络和深度学习相关的概念,我其实很好奇,在这么多你发明的东西中 ...

  4. 【吴恩达课后测验】Course 1 - 神经网络和深度学习 - 第二周测验【中英】

    [中英][吴恩达课后测验]Course 1 - 神经网络和深度学习 - 第二周测验 第2周测验 - 神经网络基础 神经元节点计算什么? [ ]神经元节点先计算激活函数,再计算线性函数(z = Wx + ...

  5. 【吴恩达课后测验】Course 1 - 神经网络和深度学习 - 第一周测验【中英】

    [吴恩达课后测验]Course 1 - 神经网络和深度学习 - 第一周测验[中英] 第一周测验 - 深度学习简介 和“AI是新电力”相类似的说法是什么? [  ]AI为我们的家庭和办公室的个人设备供电 ...

  6. 对比《动手学深度学习》 PDF代码+《神经网络与深度学习 》PDF

    随着AlphaGo与李世石大战的落幕,人工智能成为话题焦点.AlphaGo背后的工作原理"深度学习"也跳入大众的视野.什么是深度学习,什么是神经网络,为何一段程序在精密的围棋大赛中 ...

  7. [译]深度神经网络的多任务学习概览(An Overview of Multi-task Learning in Deep Neural Networks)

    译自:http://sebastianruder.com/multi-task/ 1. 前言 在机器学习中,我们通常关心优化某一特定指标,不管这个指标是一个标准值,还是企业KPI.为了达到这个目标,我 ...

  8. 如何理解归一化(Normalization)对于神经网络(深度学习)的帮助?

    如何理解归一化(Normalization)对于神经网络(深度学习)的帮助? 作者:知乎用户链接:https://www.zhihu.com/question/326034346/answer/730 ...

  9. 【神经网络与深度学习】卷积神经网络(CNN)

    [神经网络与深度学习]卷积神经网络(CNN) 标签:[神经网络与深度学习] 实际上前面已经发布过一次,但是这次重新复习了一下,决定再发博一次. 说明:以后的总结,还应该以我的认识进行总结,这样比较符合 ...

随机推荐

  1. 抢凳子日数据sql

    --先找到档期select * from hv_item_info a where a.report_begdate > '2016-07-28' and a.report_begdate &l ...

  2. 图解 classpath

    先引用几句网上流传的话: 首先 classpath是指 WEB-INF文件夹下的classes目录 classpath 和 classpath* 区别: classpath:只会到你指定的class路 ...

  3. linux 命令之comm

    1. 简介 comm命令可以用于两个文件之间的比较,它有一些选项可以用来调整输出,以便执行交集.求差.以及差集操作. 交集:打印出两个文件所共有的行. 求差:打印出指定文件所包含的且不相同的行. 差集 ...

  4. windows下安装composer抛出Composer\Downloader\TransportException异常解决办法

    1. 把默认的 secure-http 改成false composer config -g secure-http false 2. 修改配置文件 #修改全局文件(推荐) composer conf ...

  5. Android-MediaRecorder-音频录制-警告-W/MediaRecorder(13811): mediarecorder went away with unhandled events

    Android-MediaRecorder-音频录制-警告-W/MediaRecorder(13811): mediarecorder went away with unhandled events ...

  6. CSS3 animation 的尝试

    下面是动画效果: .zoombie { width: 55px; height: 85px; background-image: url("http://images2015.cnblogs ...

  7. 【笔记】Android项目添加项目引用方法

    刚才在做phoneGap时,想试图自己添加phoneGap的lib组件(jar的源码),找了好多种方法,下面这种成功了 项目邮件 Properties, Android ,Add...  ,然后Dep ...

  8. Linux 条件判断

    1. 按照文件类型判断 -b 文件 #判断文件是否存在,并且是设备文件 -c 文件 #判断文件是否存在,并且是字符设备文件 -d 目录 #判断目录是否存在,并且是否为目录(是目录返回真) -e 文件 ...

  9. 使用angularJS遇见的一些问题的解决方案

    1. angularJS的$http.post请求,SpringMVC后台接收不到参数值的解决方案 问题一般为:400 Required String parameter 'rPassword' is ...

  10. SqlServer2008 无法修改表,超时时间已到 在操作完成之前超时解决方法

    在 SQL Server Management Studio 里, 通过菜单“工具-选项”打开选项对话框. 在左侧寻找“设计器-表设计器和数据库设计器”, 然后在右侧勾选“为表设计器更新重写连接字符串 ...