猿问

如何在反向传播算法中使用链式法则的结果中乘以矩阵

我试图了解反向传播在数学上是如何工作的,并希望在 python 中使用 numpy 实现它。我使用带有一个隐藏层的前馈神经网络进行计算,sigmoid 作为激活函数,均方误差作为误差函数。这是我计算结果的截图,问题是有一堆矩阵,我不能把它们完全相乘,因为它们没有相同的维度。(截图中L是输出层,L-1是隐藏层,L-2是输入层,W是权重,E是误差函数,小写A是激活值)


(代码中第一层有28*28个节点,【因为我使用0-9位的MNIST数据库作为训练数据】,隐藏层15个节点,输出层10个节点)。


# ho stands for hidden_output

# ih stands for input_hidden


def train(self, input_, target):

    self.input_ = input_

    self.output = self.feedforward(self.input_)


    # Derivative of error with respect to weight between output layer and hidden layer

    delta_ho = (self.output - target) * sigmoid(np.dot(self.weights_ho, self.hidden), True)) * self.hidden


    # Derivative of error with respect to weight between input layer and hidden layer

    delta_ih = (self.output - target) * sigmoid(np.dot(self.weights_ho, self.hidden), True)) * self.weights_ho * sigmoid(np.dot(self.weights_ih, self.input_), True) * self.input_


    # Adjust weights

    self.weights_ho -= delta_ho

    self.weights_ih -= delta_ih

在delta_ho = ...线,矩阵的尺寸(10× - 10×)*(10×)*(1×15)让我怎么计算呢?谢谢你的帮助!


一只名叫tom的猫
浏览 116回答 1
1回答
随时随地看视频慕课网APP

相关分类

Python
我要回答