Matlab 神经网络的输入和目标混淆
最近我发布了许多关于我正在制作的字符识别程序的问题。我以为直到今天我都能让它充分发挥作用。我认为这与我对网络的训练有关。以下是我对培训和模拟过程的理解 给这两张图片 目标 投入 我想训练网络识别字母D。注意,在这之前,我已经将图像处理成二进制矩阵。我用它来训练Matlab 神经网络的输入和目标混淆,matlab,neural-network,Matlab,Neural Network,最近我发布了许多关于我正在制作的字符识别程序的问题。我以为直到今天我都能让它充分发挥作用。我认为这与我对网络的训练有关。以下是我对培训和模拟过程的理解 给这两张图片 目标 投入 我想训练网络识别字母D。注意,在这之前,我已经将图像处理成二进制矩阵。我用它来训练 [net,tr] = train(net,inputs,targets); 这里我不是输入,而是目标,因为我想训练网络识别目标图像中的所有字母 然后我就跑 outputs = sim(net,inputs); 其中,输入是带有字母
[net,tr] = train(net,inputs,targets);
这里我不是输入,而是目标,因为我想训练网络识别目标图像中的所有字母
然后我就跑
outputs = sim(net,inputs);
其中,输入是带有字母“D”的图像,或带有ABCD中任何其他字母的图像。这里的基本前提是,我想训练网络识别ABCD中的所有字母,然后选择字母A、B、C或D中的任意一个,看看网络是否能识别这个选择的字母
问题:
我的训练过程正确吗?这在很大程度上取决于你如何实现你的神经网络。虽然关于你要问的问题,我猜你没有自己实现它,而是使用了一些现成的API 无论如何,在使用之前,你应该先了解你使用的工具(这里是神经网络) 神经网络接收输入并对输入进行线性或非线性变换,然后返回输出 输入和输出总是数值。但是,它们可以表示任何类型的数据 输入可以是:
- 图像的像素
- 实值或整数属性
- 类别
- 等等
- 类(如果您正在进行分类)
- 值(如果正在进行回归)
- 时间序列中的下一个值(如果正在进行时间序列预测)
- 输入:二进制矩阵(图像)
- 输出:0,1,2或3(取决于网络在图像中识别的字符)
- 输入:二进制矩阵[A、B、C、D](每个字母一个!非常重要!)
- 目标:对应类别[0,1,2,3]
注意:你错了,因为你认为“输入”是你想在训练阶段后给网络的输入,当它们实际上是在训练阶段提供给网络的输入时。从错误消息中可以看出,您实际上应该在单元阵列中为网络提供输入和目标。如果X和T是单元数组,那么每个单元X{i}(i在[1,4]中)是二进制形式的字母(1x100矩阵),每个单元T{i}(i在[1,4]中)是包含0,1,2或3的单态矩阵。这样它应该可以工作,尺寸应该匹配。我仍然在@Dolma中得到错误。我把我的输入矩阵转换成一个单元矩阵,这样它就是4x100单元。我的目标数据是target=[{0}、{1}、{2}、{3}]。我仍然会犯同样的错误。我尝试将目标设置为一列单元格。不,输入必须是1x4单元格数组。每个单元是一个1x100矩阵。目标也是一个1x4单元阵列,它的每个单元都是1x1矩阵(这就是您所做的)。如果这不起作用,请尝试使用100x4矩阵作为输入,使用1x4矩阵作为目标。我现在就让它起作用了。然而,在我发布这个问题之前,我编写了一个不同的程序,它比传统的培训快得多。按照我的程序,我训练每一封信。换句话说,每个字母都有一个神经网络。当我运行模拟时,我只需使用一个我想要比较的字母(“D”)逐步遍历每个网络,然后找到性能最佳的网络。