private void cmbMapLayers_SelectedIndexChanged(object sender, EventArgs e)
        {
            var msg = MyAppManager.Instance.CompositionContainer.GetExportedValue <IMessageService>();

            _SelectedFeatureMapLayer = cmbMapLayers.ComboBox.SelectedItem as FeatureMapLayer;
            if (_SelectedFeatureMapLayer == null)
            {
                return;
            }
            try
            {
                HOBPackage hob = new HOBPackage();
                hob.Owner = Package.Owner;
                var sites = hob.ExtractFrom(_SelectedFeatureMapLayer.DataSet.DataTable);
                if (sites != null)
                {
                    (Package as HOBOutputPackage).Sites = sites;
                }
                else
                {
                    var _hob = Package.Parent as HOBPackage;
                    // msg.ShowError(null, "No sites are found in the selected layer. Default sites will be used, but you can not compare simulated values with observed values" );
                    (Package as HOBOutputPackage).Sites = _hob.Observations;
                }
                if (_fhd_pck == null)
                {
                    GetFHDPackage();
                }
            }
            catch (Exception ex)
            {
                msg.ShowError(null, "Failed to extract observation sites from the selected layer. Error message: " + ex.Message);
                return;
            }
        }
示例#2
0
        private void initWeights(FeatureMapLayer map)
        {
            List <double?> weights = new List <double?>();
            Neuron         neuron  = map.getNeuronAt(0);
            int            counter = 0;

            foreach (Connection conn in neuron.InputConnections)
            {
                if (!(conn.FromNeuron is BiasNeuron))
                {
                    if (counter < kernel.Area)
                    {
                        weights.Add(conn.Weight.Value);
                        counter++;
                    }
                    else
                    {
                        featureDetector.Add(weights);
                        weights = new List <>();
                        weights.Add(conn.Weight.Value);
                        counter = 1;
                    }
                }
            }
            featureDetector.Add(weights);
        }
示例#3
0
        public static void testLearningOneLayer()
        {
            Dimension2D inputDimension = new Dimension2D(5, 5);

            Dimension2D convolutionKernel = new Dimension2D(3, 3);

            ConvolutionalNetwork convolutionNet = (new ConvolutionalNetwork.Builder()).withInputLayer(5, 5, 1).withConvolutionLayer(3, 3, 2).withFullConnectedLayer(2).build();


            // CREATE DATA SET

            DataSet dataSet = new DataSet(25, 2);

            dataSet.addRow(new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, new double[] { 1, 0 });
            dataSet.addRow(new double[] { 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 }, new double[] { 0, 1 });

            // TRAIN NETWORK

            convolutionNet.LearningRule.MaxError = 0.00001;
            convolutionNet.learn(dataSet);

            Console.WriteLine("Done training!");

            FeatureMapLayer featureMap1 = ((FeatureMapsLayer)convolutionNet.getLayerAt(1)).getFeatureMap(0);
            FeatureMapLayer featureMap2 = ((FeatureMapsLayer)convolutionNet.getLayerAt(1)).getFeatureMap(1);

            //        WeightVisualiser visualiser1 = new WeightVisualiser(featureMap1, convolutionKernel);
            //        visualiser1.displayWeights();
            //
            //        WeightVisualiser visualiser2 = new WeightVisualiser(featureMap2, convolutionKernel);
            //        visualiser2.displayWeights();


            // CREATE TEST SET

            DataSet testSet = new DataSet(25, 2);

            testSet.addRow(new double[] { 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, new double[] { 1, 0 });
            testSet.addRow(new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 }, new double[] { 1, 0 });
            testSet.addRow(new double[] { 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0 }, new double[] { 0, 1 });
        }
示例#4
0
 public WeightVisualiser(FeatureMapLayer map, Kernel kernel)
 {
     this.kernel          = kernel;
     this.featureDetector = new List <>();
     initWeights(map);
 }