一个单个手写数字分类器,使用 MNIST 数据集。纯 Numpy。
MNIST 手写数字分类器 ==================================== 这是使用 numpy 库实现的多层 神经网络 的实现。此实现是 Michael Nielsen 在《神经网络与机器学习》[http://neuralnetworksanddeeplearning.com/]一书中实现的修改版本。
神经网络由称为Sigmoid 神经元的构建块组成。它们之所以被称为Sigmoid 神经元,是因为它们的输出遵循Sigmoid 函数。
xj 是输入,它们通过wj权重进行加权,神经元具有内在偏置b。神经元的输出称为"激活值( a )"。**注意:**除了Sigmoid 函数之外,还使用了其他函数,但对于初学者来说,目前这些信息已经足够了。
神经网络 是由多层神经元堆叠而成,其定义由神经元的连接权重和偏置决定。激活值是依赖于特定输入的结果。
这本书和斯坦福大学 Andrew Ng 教授的 机器学习 课程被推荐为初学者的好资源。在参考这两个资源时,有时会让我感到困惑: MATLAB 的数据结构是 _1 索引的》,而 numpy 是 _0 索引的》。神经网络 的某些参数并未定义输入层,因此书中的数学方程和代码中的索引存在一些混乱。例如,根据书中的描述,神经网络 的第二层的偏置向量被引用为 bias[0],因为输入层(第一层)没有偏置向量。我发现这有点不方便操作。
我喜欢 Scikit Learn 的 API 样式,因此我的类具有类似的代码结构。虽然理论上它与书籍和斯坦福的课程相似,但您可以找到一些简单的方法,如 fit,predict,validate 分别用于训练、测试和验证模型。
暂无开放 Issues,或尚未同步最近议题。