小编Mas*_*Zob的帖子

这个数学操作程序是否已存在?

我为我的工作做了大量的铅笔和纸数学,这可能会让人烦恼并难以跟踪.我有一段时间没有一个有趣的编程项目,所以我想到了一些东西,并想知道它是否存在.

我想创建一个代数操作程序,我可以用鼠标移动方程的各个部分,它立即显示更改,程序是直观的.例如,如果我有(ax ^ 3 + a ^ 2*y ^ 4),我可以拖动括号外的一个,它会知道把它变成一个(x ^ 3 + a*y ^ 4).

需要明确的是:我并不是想通过分析来解决方程式.我知道Mathematica和其他一百万个程序都是这样做的.在我想做的事情上,你仍然在解决它(通常我甚至不是"解决"某些东西本身,只是试图让它变成一种"讨人喜欢的形式".这不是什么东西程序真的可以).

我已经检查过MathCAD,看起来很酷,但仍然不像我在说什么.我也检查了同情(如果我这样做,我最终可能会使用它),但它仍然没有我正在谈论的内容.

那么,有人知道这是否已存在?我想这样做,但我不想重新发明轮子.

谢谢!!

python math

17
推荐指数
1
解决办法
889
查看次数

关于人工神经网络反向传播算法的问题 - 更新顺序

嘿大家,我一直试图让我编码的ANN用于反向传播算法.我已经阅读了几篇关于它们的论文,但我注意到了一些差异.

这似乎是算法的超级通用格式:

  1. 给予输入
  2. 获得输出
  3. 计算错误
  4. 计算权重的变化
  5. 重复步骤3和4,直到达到输入级别

但问题在于:显然,权重需要在某个时刻更新.但是,因为我们正在反向传播,所以在计算更靠近输入层的层的误差时,我们需要使用先前层的权重(更靠近输出层的权重,我的意思).但我们已经计算出更接近输出层的层的重量变化!因此,当我们使用这些权重来计算更接近输入的图层的误差时,我们是使用旧值还是"更新值"?

换句话说,如果我们要在我的超级通用算法中更新权重的步骤,它会是:

(立即更新重量)

  1. 给予输入
  2. 获得输出
  3. 计算错误
  4. 计算权重的变化
  5. 更新这些权重
  6. 重复步骤3,4,5,直到达到输入级别

要么

(使用权重的"旧"值)

  1. 给予输入
  2. 获得输出
  3. 计算错误
  4. 计算权重的变化
  5. 将这些更改存储在矩阵中,但不要更改这些权重
  6. 重复步骤3,4,5,直到达到输入级别
  7. 使用我们存储的值一次更新权重

本文中,我读到了两个抽象的例子(基于图3.3和3.4的例子),他们说要使用旧值,而不是立即更新值.但是,在他们的"工作示例3.1"中,他们使用新值(即使他们说他们使用的是旧值)来计算隐藏层的误差.

此外,在我的书"Ethem Alpaydin的机器学习简介"中,虽然有很多抽象的东西我还不了解,但他说"注意第一层权重delta-w_hj的变化,利用了第二层权重v_h.因此,我们应该计算两个层的变化并更新第一层权重,利用第二层权重的值,然后更新第二层权重.

说实话,看起来他们只是犯了一个错误,所有的权重都在最后同时更新,但我想确定.我的ANN给了我奇怪的结果,我想要肯定这不是原因.

谁知道?

谢谢!

algorithm neural-network

12
推荐指数
1
解决办法
1804
查看次数

简单人工神经网络的问题 - 添加

我试图用反向传播算法制作一个简单的人工神经网络.我已经创建了一个ANN,我相信我已经正确地实现了BP算法,但我当然可能是错的.

现在,我试图训练网络,给它两个0到0.5之间的随机数(a,b),然后添加它们.然后,当然,每次网络给出的输出都与a + b的理论答案进行比较(这将始终由sigmoid函数实现).

奇怪的是,输出总是收敛到介于0和1之间的数字(因为它必须是因为S形函数),但是我输入的随机数似乎对它没有影响.

编辑:对不起,它似乎没有收敛.这是输出的图像:

在此输入图像描述

权重随机分布在-1和1之间,但我也尝试过0到1之间.

我也尝试给它两个常数(0.35,0.9)并尝试训练它吐出0.5.这可以很快地收敛到0.5.如果我在0和1之间给它任意两个随机数,我也训练它吐出0.5,这也有效.

相反,我的目标是:

vector<double> target;
target.push_back(.5);
Run Code Online (Sandbox Code Playgroud)

然后它很快收敛,即使是随机输入:

在此输入图像描述

我尝试了几个不同的网络,因为我很容易在我的网络中添加图层.我使用的标准是一个有两个输入,一个是2个神经元,第二个层只有一个神经元(输出神经元).但是,我也尝试添加几层,并为它们添加神经元.它似乎没有任何改变.我的学习率等于1.0,虽然我试过它等于0.5,并没有太大的不同.

有没有人知道我能尝试什么?

这甚至是ANN能够做到的吗?我无法想象它不会,因为他们可以接受训练来做这些复杂的事情.

有什么建议?谢谢!

这是我训练它的地方:

//Initialize it. This will be one with 2 layers, the first having 2 Neurons and the second (output layer) having 1.
vector<int> networkSize;
networkSize.push_back(2);
networkSize.push_back(1);
NeuralNetwork myNet(networkSize,2);

for(int i = 0; i<5000; i++){
    double a = randSmallNum();
    double b = randSmallNum();
    cout << "\n\n\nInputs: " << a << ", " << b << " with expected target: " << a + b; …
Run Code Online (Sandbox Code Playgroud)

c++ neural-network

11
推荐指数
1
解决办法
2231
查看次数

标签 统计

neural-network ×2

algorithm ×1

c++ ×1

math ×1

python ×1