神经网络似乎工作得很好,直到用于处理数据(所有的结果几乎是相同的)
Neural Network seems to work fine until used for processing data (all of the results are practically the same)
我最近实现了一个典型的3层神经网络(输入->隐藏->输出),我使用sigmoid函数进行激活。目前,主机程序有3种模式:
- 创建,似乎工作得很好。它创建一个具有指定数量的输入、隐藏和输出神经元的网络,将权重初始化为随机值或零。
- 训练,加载数据集,计算网络的输出,然后反向传播误差并更新权重。据我所知,这是可行的。在数据集上训练后,权重会发生变化,但不是非常大。
- 正在处理,似乎工作正常。然而,用于训练的数据集或任何其他数据集的数据输出都非常糟糕。它通常只是一个连续的1流,偶尔有0.999999,或者每个输入的每个输出值都是0.9999,输入之间的最后一位数字不同。据我所知,最后两位数与应该输出的内容之间没有关联。
我应该如何去找出什么是不正常的工作?
您需要找到一组参数(神经元数量、学习率、训练迭代次数),这些参数可以很好地用于分类以前未见过的数据。人们通常通过将数据分为三类来实现这一目标:训练、验证和测试。
无论你决定做什么,只要记住,在你训练的相同数据上进行测试是没有意义的,因为任何接近合理的分类方法都应该在这样的设置下获得100%的正确。
相关文章:
- 警告处理为错误这里有什么问题
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 在C#中处理C++指针而不使用unsafe的最佳方法
- valgrind-hellgrind与泄漏检查的结果不同
- 处理所有二次公式结果
- 使用std::tie进行类似golang的错误处理,同时返回结果,是否有缺点?(C++11)
- 柠檬解析器 - 如何处理柠檬解析器的结果
- 如何处理 cos(M_PI/2) 的结果
- 如果命令不只是打印结果,而是进入某种交互模式,如何处理来自C++的终端命令执行的输出?
- 如何确认不同的结果是否是由于浮点处理的差异
- Qt Creator:如何运行windows批处理文件并获得结果
- 有趣的处理时间结果
- 为什么使用mktime处理指针和非指针时difftime()会产生不同的结果?
- 我如何使用条件结果来告诉程序要处理哪个二维数组?
- 神经网络似乎工作得很好,直到用于处理数据(所有的结果几乎是相同的)
- 用c++处理来自MySQL的utf-8数据并返回结果
- c和c++中对long long int的处理结果不同
- 用于处理方法结果的变分模板
- 如何使用一个结果集处理程序消除多个类似的sql查询
- c++从const int*到int*的转换,处理意外结果