神经网络设置

时间:2016-04-24 07:04:20

标签: python machine-learning neural-network

我正在尝试用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.

1 个答案:

答案 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。它包括设置基本公式所需的所有公式。