神经网络设置
问题描述:
我想在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个单元。 V的第i行表示输入第i个隐藏单元的权重集合。
所述隐藏输出层之间,我打算应用矩阵W,其是由10 201
矩阵W:在I,J - 条目代表连接的第j个单元中的权重隐藏层到输出层中的第i个单元。 W的第i行是输入第i个输出单元的权重集合。
所以我从输入矩阵开始,这是n 784.有人可以解释做什么?我需要把它乘以什么,然后把结果乘以什么/怎么样?我不确定如何将这些矩阵相乘。
(我们只是调用激活函数f()。)
我有点通过矩阵的尺寸和不知道迷惑何时/何/究竟如何使用V和W
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;
问题基本上是你,包括你的初始矩阵偏置:
[This](http://neuralnetworksanddeeplearning.com/)是一个不错的和全面的介绍神经网络,并在他们的方式实现神经网络分类MNIST数据集在Python中。 – sietschie
我会为你解决这个问题,但是你需要阅读更多关于神经网络的知识来了解它是如何工作的(不要忘记,编程是90%的学习/计划和10%的编码)。因此,输入维度是n x 785,隐藏的昏暗是n x 200.权重(w)定义为:w = transpose(input_dims)* hidden_dims。您应该使用转置来使您的数据适合矩阵乘法:w = 785 x n * n x 200.这会给您一个尺寸为785x200的w,这是所需的输出。 (*表示矩阵乘法)。 – TasosGlrs