我正在尝试制作反向传播神经网络.根据我在这里找到的教程:James McCaffrey的MSDN文章.他提供了许多例子,但他所有的网络都是基于同样的问题来解决.所以他的网络看起来像4:7:3 >> 4输入 - 7隐藏 - 3输出.
他的输出总是二进制0或1,一个输出得1,将爱尔兰花分类为三个类别之一.
我想用神经网络解决另一个问题,这需要我2个神经网络,其中需要在0..255之间的输出和0到2倍Pi之间的另一个输出.(一个完整的转弯,圆圈).基本上我认为我需要一个范围从0.0到1.0或-1到1以及介于两者之间的任何输出,以便我可以将它乘以becomme 0..255或0..2Pi
我认为他的网络确实有行为,就像它的computeOutputs一样,我在下面显示:
private double[] ComputeOutputs(double[] xValues)
{
if (xValues.Length != numInput)
throw new Exception("Bad xValues array length");
double[] hSums = new double[numHidden]; // hidden nodes sums scratch array
double[] oSums = new double[numOutput]; // output nodes sums
for (int i = 0; i < xValues.Length; ++i) // copy x-values to inputs
this.inputs[i] = xValues[i];
for (int j = 0; j < numHidden; ++j) // compute i-h sum of …Run Code Online (Sandbox Code Playgroud) 我的内部循环包含一个计算,分析显示有问题.
想法是采用灰度像素x(0 <= x <= 1),并"增加其对比度".我的要求相当宽松,如下:
因此图表必须如下所示:
.
我有两个实现(他们的结果不同但两者都符合):
float cosContrastize(float i) {
return .5 - cos(x * pi) / 2;
}
float mulContrastize(float i) {
if (i < .5) return i * i * 2;
i = 1 - i;
return 1 - i * i * 2;
}
Run Code Online (Sandbox Code Playgroud)
因此,我要求对这些实现之一进行微优化,或者为您自己的原始,更快的公式.
也许你们其中一个人甚至可以把这些小事扭曲;)