【发布时间】:2016-04-24 07:04:20
【问题描述】:
我正在尝试在 Python 中实现用于 MNIST 数字识别的单个隐藏层神经网络。
如下:
h1
x1 z1
h2
x2 z2
1 h3
1
我正在使用大小为 200 的隐藏层。
数字的特征数是 784。
班级数量为10个。
每个标签都被转换为一个长度为 10 的向量,该向量在真实类的位置有一个 1,在其他位置有一个 0。
在输入层和隐藏层之间,我将使用 200 x 785 矩阵 V。
矩阵V:第i,j-项表示连接输入层中第j个单元到隐藏层中第i个单元的权重。 V 的第 i 行表示输入第 i 个隐藏单元的权重集合。
在隐藏层和输出层之间,我将应用一个矩阵 W,它是 10 x 201。
矩阵 W:第 i, j - 项表示连接隐藏层中第 j 个单元和输出层中第 i 个单元的权重。 W 的第 i 行是输入第 i 个输出单元的权重的集合。
所以我从输入矩阵开始,即 n 乘以 784。有人能解释一下该怎么做吗?我需要将它乘以什么,然后将结果乘以什么/如何?我不确定如何将这些矩阵相乘。
(我们只调用激活函数 f()。)
我对矩阵的维度有点困惑,不确定何时/何地/如何准确使用 V 和 W。
【问题讨论】:
-
This 是对神经网络以及他们实现神经网络以在 python 中对 MNIST 数据集进行分类的方式的一个很好而全面的介绍。
-
我会为你分解这一点,但你需要阅读更多关于 NN 的内容以了解它是如何工作的(不要忘记,编程是 90% 的学习/计划和 10% 的编码)。因此,输入维度为 n x 785,隐藏维度为 n x 200。权重 (w) 定义为:w=transpose(input_dims) * hidden_dims。您应该使用转置使您的数据适合矩阵乘法:w=785 x n * n x 200。这将为您提供大小为 785x200 的 w,这是所需的输出。 (这里的 * 表示矩阵乘法)。
标签: python machine-learning neural-network