请帮助我理解神经网络中的单元概念。根据书中所述,输入层中的一个单元代表训练元组的一个属性。然而,具体它是如何代表的并未详细说明。
这是相关的图表:
关于输入单元有两种“思考路径”。第一种可能是X1代表attr1,X2代表attr2…另一种可能是X1、X2和X3都代表attr1,但X1代表Value.VALUE_ONE,…,X3代表Value.VALUE_THREE。因此,在最少的情况下,如果attr1 = Value.VALUE_TWO,它将被加权并同时馈送到第二层。
public class Tuple{ private Value attr1 private Value attr2 private Value attr3}public enum Value{ VALUE_ONE, VALUE_TWO, VALUE_THREE}
第二个问题是关于隐藏层单元的。如何决定隐藏层中应该有多少单元,以及它们在模型中代表什么?
回答:
“单元”只是浮点值。
所有在这里发生的计算都是向量乘法,因此可以使用矩阵乘法和GPU硬件很好地并行化。
一般的计算看起来像这样:
double v phi(double[] x, double[] w, double theta) { double sum = theta; for(int i = 0; i < x.length; i++) sum += x[i] * w[i]; return tanh(sum);}
但你不希望自己在Java代码中这样做。你希望在GPU上以并行方式进行,因为这将快100倍。