必须在Perceptron训练算法中输入相同类型的输入吗?
即一个输入是否有布尔类型而另一个输入有整数类型?
答案 0 :(得分:2)
他们不能随心所欲。查看计算步骤和终止条件(收敛标准):
Update:
y[j](t) = f[w(t) ⋅ x[j] ]
= f[w[0](t) x[j,0] + w[1](t) x[j,1] + ⋯ + w[n](t) x[j,n] ]
Convergence:
error = sum(abs(d[j] - y[j](t) )for all j)
error / j_max < epsilon
这要求您至少具有部分排序的数据类型,其中包含您的权重类型的定义点积(通常与权重类型相乘并在产品类型上添加),减去错误计算,以及一些有效收敛值 epsilon 。
我强烈建议您坚持使用实际(浮动或双重)重量。如果你对操作有正确的形式,那么你的输入可能属于另一种类型,但在实践中它有点棘手:你能在输入和权重向量上定义那个点积吗?对于字符串输入,什么是
"hello" ⋅ [0.66, 0.21, -1.13]
更一般地说,如何在感知器中存储评估向量,然后测量它与输入的匹配程度?如何在反向传播中调整向量?
如果您可以管理这些,您可以处理您的输入类型。
就个人而言,我建议您坚持使用第一个建议:如果可以,请将输入映射到数字。
答案 1 :(得分:1)
它基于您用于构建它的库。通常,所有神经网络只有一种输入 - 小数。从理论的角度来看,没有任何其他东西得到支持。所有库在引擎盖下做的是将任何其他数据类型转换为十进制输入。字符串通过字典,布尔值转换 - 只有0和1(或-1和1)等。