【问题标题】:Understanding the following neural network了解以下神经网络
【发布时间】:2017-06-26 07:34:19
【问题描述】:

我目前已开始阅读 Michael Nielson 撰写的在线书籍,其中深入讨论了创建神经网络的基础知识并提供了解释性代码示例。

我指的网书可以看here

我一直在关注并创建了一个基本的神经网络,该网络实现了随机梯度下降,可以稍微改变权重和偏差以提高学习准确性。

代码长约 75 行(减去注释),可以看到 here.

我使用了 MNIST dataset,它由 60,000 个数字组成,我用来训练网络。

SGD 函数采用training_data,它是一个元组列表(x, y),表示训练输入和相应的期望输出以及其他不言自明的参数。

在 Python shell 中创建网络实例时,我会加载 MNIST 数据集作为输入,并使用它来调整权重和值。

训练完成后,我有点困惑如何在不属于数据集的其他数字输入上实际测试网络。

我认为我应该调用feedforward 函数并输入我的数字字形矩阵是否正确?

def feedforward(self, a):
        """Return the output of the network if "a" is input."""
        for b, w in zip(self.biases, self.weights):
            a = sigmoid(np.dot(w, a)+b)
        return a

假设输入 a 是一个 (n, 1) Numpy ndarray,而不是一个 (n, ) 向量。这里,n 是网络的输入数量。

这本书谈了很多关于如何训练网络的内容,我只是对如何运行一些验证测试并获得一些网络输出感到有些困惑。

【问题讨论】:

    标签: python neural-network


    【解决方案1】:

    你的假设是正确的。 feedforward 函数的输出将是网络不同结果的概率分布。检查您共享的代码中定义的evaluate() 函数,了解它的使用方式。

    【讨论】:

    • 我也是这么想的。我现在就试一试。非常感谢您的回复。
    • 附带说明...每次创建“网络”实例时,我是否必须在运行外部测试之前重新训练数据集以获得正确的权重/偏差?或者有什么方法可以保存当前的权重/偏差
    • 您可以使用 pickle 或类似技术保存网络。
    • 谢谢,我得研究一下:D
    猜你喜欢
    • 2016-03-07
    • 2019-04-11
    • 1970-01-01
    • 2011-01-12
    • 2019-06-22
    • 2018-03-21
    • 2020-09-29
    • 2015-11-11
    • 1970-01-01
    相关资源
    最近更新 更多