Windows phone 8 windowsphone8.0上的神经网络

Windows phone 8 windowsphone8.0上的神经网络,windows-phone-8,neural-network,aforge,Windows Phone 8,Neural Network,Aforge,我正在尝试在WindowsPhone8应用程序上使用一个新的神经网络框架进行编写,并安装了PCL版本 我写了以下代码: Pivotpage.xaml.cs _inputDataGelen = new double[4] { 0.067, 0.033, 0.057, 0.021 }; double compute = network.Compute(_inputDataGelen)[0]; // (1) //MessageBox.Show("Output is "+ Math.Round(com

我正在尝试在WindowsPhone8应用程序上使用一个新的神经网络框架进行编写,并安装了PCL版本

我写了以下代码:

Pivotpage.xaml.cs

_inputDataGelen = new double[4] { 0.067, 0.033, 0.057, 0.021 };

double compute = network.Compute(_inputDataGelen)[0]; // (1)
//MessageBox.Show("Output is "+ Math.Round(compute));  
我正在桌面应用程序上尝试相同的代码,我得到的计算结果为0.00112。。或0.01283..0.02123..0.03231..0.04159。。。所以如果我四舍五入到一位数字0,1,2,3,4

但当我尝试WindowsPhone8项目时,我得到的计算结果就像0.999995345

我的问题是什么

提前谢谢。对不起,我的语言。桌面代码:

 ActivationNetwork network = null; //global variable
 bool dongu = false;
 ...
 ...

 network = new ActivationNetwork(
            new BipolarSigmoidFunction(2), //activation func.
            4,                             //input count
            20,                            //hidden layer count
            1);                            //output count     

        //Learning Network
        BackPropagationLearning backprob = new BackPropagationLearning(network);
        backprob.LearningRate = 0.1;
        backprob.Momentum = 0.0;

        int iteration = 1;
        double hata = 0.0;
        //loop
        while(!dongu)
        {
            hata = backprob.RunEpoch(_inputData, _outputData);

            iteration++;

            if (iteration > 10000 || hata < 0.0001)
                break;

        }

        double a1 = Convert.ToDouble(textBox3.Text);
        double a2 = Convert.ToDouble(textBox4.Text);
        double a3 = Convert.ToDouble(textBox5.Text);
        double a4 = Convert.ToDouble(textBox6.Text);

        //Actually devide 100. Not 1000.
        double[] girdi = { a1/1000, a2/1000, a3/1000, a4/1000 }; //normalize


        textBox1.Text = network.Compute(girdi)[0].ToString() + " compute"; //output ile aynı değer geliyor

        double find = network.Output[0]*100; //denormalize

        //textBox2.Text = (network.Output[0]).ToString() + " output"; //compute ile aynı değer geliyor

        //tam sayıya yuvarlama
        find = Math.Round(find,1);


        if (find >= 0.0 && find <= 1.7) //bu aralık optimize edilebilir
        { 
            //MessageBox.Show("Iris-setosa");
            textBox7.Text = "1";
        }

        else if (find > 1.7 && find <= 2.6) 
        { 
            //MessageBox.Show("Iris-versicolor");
            textBox7.Text = "2";
        } 

        else if (find > 2.6 && find <= 3.7) 
        { 
            //MessageBox.Show("Iris-virginica"); 
            textBox7.Text = "3";
        }
列车组是


@AndersGustafsson,这段代码在桌面上运行。如果我输入5.1、3.5、1.4、0.2个双数,我给出的输出是1。

网络变量是什么类型的,您是如何初始化的?我使用了您的初始化,只是我将输入计数从9更改为4。调用Compute时,无论何时在使用Cureos二进制文件的Windows Phone上尝试此操作,还是在使用NuGet程序集的控制台应用程序中尝试此操作,我都会得到接近1的值。你能展示一下能产生你期望的结果的桌面应用程序代码吗?奥斯曼,我会在有时间的时候详细研究一下。同时,我认为你应该考虑把文本从答案转到你原来的问题,然后删除答案。或者,为了便于进一步讨论,将整个问题作为一个问题发布在Github上,.Ok@AndersGustafsson我在Github上写了这个问题。我正在努力解决问题,等待帮助。Thx。问题解决了。我定义了一些函数。位置不正确:/这是我的错误。非常抱歉@AnderGustafsson。所以,谢谢你做的一切。很高兴事情最终为你解决了,奥斯曼。如果您在PCL/WP8方面遇到其他问题,请立即在报告中报告。