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; } }
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); }
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 }); }
public WeightVisualiser(FeatureMapLayer map, Kernel kernel) { this.kernel = kernel; this.featureDetector = new List <>(); initWeights(map); }