最近我发布了很多关于我正在制作的角色识别程序的问题。我以为我一直工作到今天。我认为这与我对网络的培训有关。以下是对我如何看待训练和模拟程序的解释。
给出这两个图像
目标
输入
我想训练网络识别字母D.请注意,在此之前,我已经将图像处理成二进制矩阵。对于培训我使用
[net,tr] = train(net,inputs,targets);
而不是输入我是目标,因为我想训练网络识别目标图像中的所有字母。
然后我跑outputs = sim(net,inputs);
其中输入是带有字母“D”的图像,或带有ABCD中任何其他字母的图像。这里的基本前提是我想训练网络识别ABCD中的所有字母,然后选择任何字母A,B,C或D,看看网络是否识别出这个选择的字母。
问题:
我对训练程序是否正确?
答案 0 :(得分:0)
这很大程度上取决于你如何实现你的神经网络。虽然关于你问的问题,我猜你自己并没有实现它,而是使用了一些现成的API。
无论如何,你应该先使用它们之前使用的工具(这里是神经网络)。
神经网络接受输入并执行输入的线性或非线性变换并返回输出。
输入和输出始终是数值。但是它们可能代表任何类型的数据。
输入可以是:
在您的情况下,输入是您的角色图像(二进制矩阵)的像素。
输出可以是:
在您的情况下,您正在进行分类(预测输入所代表的字符),因此您的输出是一个类。
为了让您了解网络是如何训练的,我将首先解释如何在训练后使用它,然后解释它对训练阶段的意义。
所以一旦你训练了你的网络,你就会给它代表你的图像的二进制矩阵,它将输出(例如)的类(字符):0表示A,1表示B,2表示C和3代表D.换句话说,你有:
培训阶段包括告诉网络您希望为每个输入输出哪个输出。
训练阶段使用的数据类型与“预测阶段”中使用的数据类型相同。因此,对于培训阶段:
这样,你告诉网络要知道如果给它A的图像它应该输出0,如果你给它B的图像它应该输出1,依此类推。
注意:您错了,因为您认为“输入”是您希望在培训阶段之后为网络提供的输入,当时它们实际上是在培训期间提供给网络的输入相。