好的,所以似乎这里的问题似乎更符合“我如何神经网络”的概念,我可以概述这里的基本过程,试图巩固您的想法,但实际上,实施它你去你自己。我个人认为专有语言(MATLAB)是一种令人憎恶的东西,但我总是欣赏知识分子的热情。
神经网络的基本概念是,你有一系列层次的权重连接它们的节点(取决于你想做什么,你可以将每个节点连接到上面和下面的层,或连接每个节点或其中的任何地方)。每个节点都有一个“工作函数”或概率函数,表示给定节点或神经元将评估为“开”或1的机会。一般工作流程始于任何顶层神经元/节点把它们初始化为你的数据值(在你的情况下,你可能会开始每个这些关闭,因为图像中的像素值,归一化为二进制将是最简单的)。这些节点中的每一个然后将乘以一个权重并向下反馈给第二层,根据总和(几何或算术和,取决于您的实现)将被视为“隐藏层”,这将与工作函数来确定隐藏层的状态。
最后一点是有点理论性,很难遵循,所以这里是一个例子。假设你的第一行有三个节点([1,0,1])
,并且将这三个节点连接到第二层的第一个节点的权重类似于([0.5, 2.0, 0.6])
。如果你正在做的算术和这意味着,如果您使用的是逻辑功能的功函数(一个非常普遍的在你的“隐藏层”的第一个节点上的权重将
1*0.5 + 0*2.0 + 1*0.6 = 1.1
选择,虽然tanh也很常见),这会使该节点评估的机会约为75%。
您可能希望最终图层有26个节点,每个字母一个,但可以添加更多隐藏层以改善模型。你会假设你的模型预测的字母将是最大权重标题中的最后一个节点。
在你开始运行之后,你想要训练它,因为你可能只是随机播种你的权重,感。这里有很多不同的方法,但我通常会概述反向传播,这是一种非常常见的训练神经网络的方法。这个想法本质上是,因为你知道图像应该被识别哪个字符,所以你将结果与你的模型实际预测的结果进行比较。如果你的模型准确地预测了角色你很好,你可以保持原样,因为它工作。如果你预测了一个不正确的字符,你想通过你的神经网络返回,并增加从你送入的像素节点到应该被预测的字符的结尾节点的权值。您还应该减少导致不正确返回的字符的权重。
希望有帮助,让我知道你是否还有其他问题。
你能澄清你的问题吗?我不确定你在这个过程中遇到什么困难。你能否也发布一些代码?一般来说,如果没有对其工作原理的直观理解,实施ml方法只会以泪结束。你有一个概念上的问题,或者你的代码中存在一个错误? – 2013-04-22 02:03:53
因为我已经为它实现了GUI,所以发布我的代码会有点困难。当我开发这个程序时,我意识到我可能会考虑这个错误。我在整个过程中遇到问题。我什么时候能看到网络是否可以识别我给它的任何输入?这是我的理解,我训练网络的字母A到Z,然后我提交一个逻辑阵列的任何字母或字母从图像处理使用bwlabel。我的希望是从网络得到回复,说明我的信件是否被识别。 – roldy 2013-04-22 02:41:01