我正在尝试用Python中的MNIST数字识别实现单个隐藏层神经网络。
如下所示:
h1
x1 z1
h2
x2 z2
1 h3
1
我正在使用大小为200的隐藏图层。
数字的功能数量为784。
班级数是10。
每个标签都被转换为长度为10的向量,其中真正类的位置为1,其他位置为0。
在输入和隐藏层之间,我将使用200乘785矩阵V。
矩阵V:i,j - 条目表示将输入图层中的第j个单位与隐藏图层中的第i个单位连接的权重。第i行代表加入第i个隐藏单位的权重集合。
在隐藏输出层之间,我将应用矩阵W,即到201的10。
矩阵W:i,j - 条目表示将隐藏层中的第j个单位连接到输出层中的第i个单位的权重。 W的第i行是输入第i个输出单元的权重集合。
所以我从输入矩阵开始,这是n乘以784.有人可以解释该怎么做?我需要将它乘以,然后将结果乘以什么/如何?我不确定如何将这些矩阵相乘。
(我们只需调用激活函数f()。)
我对矩阵的维数感到有点困惑,不知道何时/何地/如何使用V和W.
答案 0 :(得分:0)
以下是前馈神经元网络的基本模拟步骤(从我的cpp神经网络here移植):
def simulate(inputs):
currentActivatedValues = inputs
for i in range(len(self.weights)):
summedValues = _weights[i] * currentActivatedValues + _biases[i]
# Perform activation function with the summed values
for k in range(len(summedValues)):
summedValues[k] = tanh( summedValues[k] );
currentActivatedValues = summedValues
return currentActivatedValues;
问题基本上是你在初始矩阵中包含了偏差。你应该做的是事后处理它们。
查看有关前馈神经元网络的paper。它包括设置基本公式所需的所有公式。