与神经网络的输入和目标混淆

时间:2013-05-04 00:22:21

标签: matlab neural-network

最近我发布了很多关于我正在制作的角色识别程序的问题。我以为我一直工作到今天。我认为这与我对网络的培训有关。以下是对我如何看待训练和模拟程序的解释。

给出这两个图像

目标

enter image description here

输入

enter image description here

我想训练网络识别字母D.请注意,在此之前,我已经将图像处理成二进制矩阵。对于培训我使用

[net,tr] = train(net,inputs,targets);

而不是输入我是目标,因为我想训练网络识别目标图像中的所有字母。

然后我跑

outputs = sim(net,inputs);

其中输入是带有字母“D”的图像,或带有ABCD中任何其他字母的图像。这里的基本前提是我想训练网络识别ABCD中的所有字母,然后选择任何字母A,B,C或D,看看网络是否识别出这个选择的字母。

问题:

我对训练程序是否正确?

1 个答案:

答案 0 :(得分:0)

这很大程度上取决于你如何实现你的神经网络。虽然关于你问的问题,我猜你自己并没有实现它,而是使用了一些现成的API。

无论如何,你应该先使用它们之前使用的工具(这里是神经网络)。

神经网络接受输入并执行输入的线性或非线性变换并返回输出。

输入和输出始终是数值。但是它们可能代表任何类型的数据。

输入可以是:

  • 图片的像素
  • 实值或整数属性
  • 分类

在您的情况下,输入是您的角色图像(二进制矩阵)的像素。

输出可以是:

  • 课程(如果您正在进行分类)
  • 值(如果您正在进行回归)
  • 时间序列中的下一个值(如果您正在进行时间序列预测)

在您的情况下,您正在进行分类(预测输入所代表的字符),因此您的输出是一个类。

为了让您了解网络是如何训练的,我将首先解释如何在训练后使用它,然后解释它对训练阶段的意义。

所以一旦你训练了你的网络,你就会给它代表你的图像的二进制矩阵,它将输出(例如)的类(字符):0表示A,1表示B,2表示C和3代表D.换句话说,你有:

  • 输入:二进制矩阵(图片)
  • 输出 0,1,2或3(取决于网络在图片中识别的字符)

培训阶段包括告诉网络您希望为每个输入输出哪个输出。

训练阶段使用的数据类型与“预测阶段”中使用的数据类型相同。因此,对于培训阶段:

  • 输入:二进制矩阵[A,B,C,D] (每个字母一个!非常重要!)
  • 目标:相应的类[0,1,2,3]

这样,你告诉网络要知道如果给它A的图像它应该输出0,如果你给它B的图像它应该输出1,依此类推。

注意:您错了,因为您认为“输入”是您希望在培训阶段之后为网络提供的输入,当时它们实际上是在培训期间提供给网络的输入相。