public static void SpeedInt32Test() { Console.WriteLine("================ Int Test ============== \n\n"); int count = 10000; var Fc = new FullConnect <int>(100, 3, 1); var sig = new Sigmoid <int>(); var net = new Network <int>(OptimiserType.LevenbergMarquardt); net.Add(Fc); net.Add(sig); var rnd = new Random(); var sw = new Stopwatch(); var tInp = new Tensor4 <int>(1, 1, 100, 1, rnd); Tensor4 <int> outp = new Tensor4 <int>(1, 1, 1, 1); sw.Start(); for (int j = 0; j < count; j++) { outp = net.Forward(tInp); } Console.WriteLine("Прямой проход слоя составляет: " + sw.ElapsedMilliseconds / (double)count + " мс"); sw.Stop(); Console.WriteLine("\n\n"); for (int i = 0; i < outp.D; i++) { Console.WriteLine(outp[0, 0, i, 0]); } }
/// <summary> /// Reconnectes the Network, remembering the connections /// between neurons, making FeedNeuralNetwork() faster. /// </summary> protected void ConnectNeuralNetwork() { if (Network == null) { Network = new Dictionary <Neuron, IList <Synapse> >(); } else { Network.Clear(); } foreach (var gene in Genes) { if (!Network.ContainsKey(Neurons[gene.Val.transmitter])) { Network.Add(Neurons[gene.Val.transmitter], new List <Synapse>(1)); } if (!Network.ContainsKey(Neurons[gene.Val.receiver])) { Network.Add(Neurons[gene.Val.receiver], new List <Synapse>(1)); } Network[Neurons[gene.Val.transmitter]].Add(gene.Val); Network[Neurons[gene.Val.receiver]].Add(gene.Val); } }
static void Main(string[] args) { Network network = new Network(); Layer layer2 = new Layer(); Layer layer3 = new Layer(); Node node1 = new Node(2); Node node2 = new Node(2); Node node3 = new Node(2); layer2.Add(node1); layer2.Add(node2); layer3.Add(node3); network.Add(layer2); network.Add(layer3); Dictionary<Signal, Signal> trainingSet = new Dictionary<Signal, Signal>(); Signal signalFF = new Signal(); Signal signalFT = new Signal(); Signal signalTF = new Signal(); Signal signalTT = new Signal(); Signal signalF = new Signal(); Signal signalT = new Signal(); signalFF.Add(0.0); signalFF.Add(0.0); signalFT.Add(0.0); signalFT.Add(1.0); signalTF.Add(1.0); signalTF.Add(0.0); signalTT.Add(1.0); signalTT.Add(1.0); signalF.Add(0.0); signalT.Add(1.0); trainingSet.Add(signalFF, signalF); trainingSet.Add(signalFT, signalT); trainingSet.Add(signalTF, signalT); trainingSet.Add(signalTT, signalF); network.Train(trainingSet); Console.WriteLine("OutputFF: " + signalFF * network); Console.WriteLine("OutputFT: " + signalFT * network); Console.WriteLine("OutputTF: " + signalTF * network); Console.WriteLine("OutputTT: " + signalTT * network); Console.ReadLine(); }
static void Main(string[] args) { NetworkElement tunnelNetwork = new Network(); tunnelNetwork.Add(new Tunnel(5)); tunnelNetwork.Add(new Railroad(5)); NetworkElement stationNetwork = new Network(); stationNetwork.Add(new Station()); stationNetwork.Add(new Railroad(10)); NetworkElement bigNetwork = new Network(); bigNetwork.Add(tunnelNetwork); bigNetwork.Add(stationNetwork); System.Console.WriteLine(bigNetwork.GetMaintananceCost()); }
public FakeNetworksService() { networks = new List <Network>(); Network network = new Network(1, "Network 1", 10); SubStation substation1 = new SubStation(2, "Substation A"); Device switch1 = new Switch(3, "Switch A"); Line line1 = new Line(4, "Line A", 100); line1.Terminal1 = substation1; line1.Terminal2 = switch1; substation1.Terminal = line1; switch1.Terminal1 = line1; SubStation subStation2 = new SubStation(10, "Substation B"); subStation2.Terminal = line1; switch1.Terminal2 = subStation2; Load load1 = new Load(5, "Load 1"); line1.Connect(load1); Load load2 = new Load(7, "Load 2"); line1.Connect(load2); network.Add(substation1); network.Add(subStation2); network.Add(switch1); network.Add(line1); networks.Add(network); }
private void Add() { using (LayerDialog dialog = new LayerDialog() { Layer = (Layer)TemplateLayer.Clone() }) { if (dialog.ShowDialog(this) == DialogResult.OK) { Network.Add(dialog.Layer); UpdateItems(); } } }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object can be used to retrieve data from input parameters and /// to store data in output parameters.</param> protected override void SolveInstance(IGH_DataAccess DA) { string path = ""; int size = 0; bool debug = false; int maxNgon = 3; double tol = -1; if (!DA.GetData(0, ref path)) { return; } if (!DA.GetData(1, ref size)) { return; } DA.GetData(2, ref maxNgon); DA.GetData(3, ref tol); IplImage img = new IplImage(path, LoadMode.Color); IplImage imgHSV = new IplImage(img.Size, BitDepth.U8, 3); Cv.CvtColor(img, imgHSV, ColorConversion.RgbToHsv); var channels = imgHSV.Split(); IplImage hue = channels[0]; IplImage Render = new IplImage(img.Size, BitDepth.U8, 3); //色抽出マスク用画像宣言 IplImage imgB1 = new IplImage(img.Size, BitDepth.U8, 1); IplImage imgB2 = new IplImage(img.Size, BitDepth.U8, 1); IplImage imgR = new IplImage(img.Size, BitDepth.U8, 1); IplImage imgG = new IplImage(img.Size, BitDepth.U8, 1); IplImage imgB = new IplImage(img.Size, BitDepth.U8, 1); int RG = 30; int GB = 90; int BR = 150; int off = 1; int smin = 30; int bmin = 30; //色抽出用閾値作成 CvScalar Bmin1 = new CvScalar(0, smin, bmin); CvScalar Bmax1 = new CvScalar(RG - off, 255, 255); CvScalar Bmin2 = new CvScalar(BR + off, smin, bmin); CvScalar Bmax2 = new CvScalar(180, 255, 255); CvScalar Gmin = new CvScalar(RG + off, smin, bmin); CvScalar Gmax = new CvScalar(GB - off, 255, 255); CvScalar Rmin = new CvScalar(GB + off, smin, bmin); CvScalar Rmax = new CvScalar(BR - off, 255, 255); //閾値を用いて色抽出 Cv.InRangeS(imgHSV, Bmin1, Bmax1, imgB1); Cv.InRangeS(imgHSV, Bmin2, Bmax2, imgB2); Cv.Add(imgB1, imgB2, imgB); Cv.InRangeS(imgHSV, Gmin, Gmax, imgG); Cv.InRangeS(imgHSV, Rmin, Rmax, imgR); //Blobs化 CvBlobs Rs = new CvBlobs(imgR); CvBlobs Gs = new CvBlobs(imgG); CvBlobs Bs = new CvBlobs(imgB); int minArea = img.Width * img.Height / 20000; int maxArea = img.Width * img.Height; Bs.FilterByArea(minArea, maxArea); Rs.FilterByArea(minArea, maxArea); Gs.FilterByArea(minArea, maxArea); //blobの配列化 CvBlob[] Rblobs = new CvBlob[Rs.Count]; CvBlob[] Bblobs = new CvBlob[Bs.Count]; CvBlob[] Gblobs = new CvBlob[Gs.Count]; Rs.Values.CopyTo(Rblobs, 0); Bs.Values.CopyTo(Bblobs, 0); Gs.Values.CopyTo(Gblobs, 0); if (!debug) { string deb = ""; foreach (var bbbb in Rblobs) { deb += bbbb.Area + "\r\n"; } //BlobからLine化 List <Line> Rlines = ExtractLinesFromBlobs(Rblobs); List <Line> Blines = ExtractLinesFromBlobs(Bblobs); List <Line> Glines = ExtractLinesFromBlobs(Gblobs); //scale double MinSize = Math.Min(img.Width, img.Height); double ScaleFactor = (double)size / MinSize; var scale = Transform.Scale(new Point3d(0, 0, 0), ScaleFactor); Network network = new Network(); //ネットワークにLineを色ごとにラベル付きで入れる foreach (var l in Rlines) { l.Transform(scale); network.Add(l, 0); } foreach (var l in Blines) { l.Transform(scale); network.Add(l, 1); } foreach (var l in Glines) { l.Transform(scale); network.Add(l, 2); } double t = network.SearchWeldToleranceBinary(0, (double)size / 10, 0, 10); if (tol != -1) { network.weld(tol * size); } else { network.weld(t); } deb += "tolerance: " + t + "\r\n\r\n"; //ウェルド後のエッジ抽出 Rlines = network.ExtractLines(0); Blines = network.ExtractLines(1); Glines = network.ExtractLines(2); List <List <int> > faces = network.detectCycles(maxNgon); deb += "B: " + Bs.Count.ToString() + "\r\n"; deb += "R: " + Rs.Count.ToString() + "\r\n"; deb += "G: " + Gs.Count.ToString() + "\r\n"; Mesh mesh = GenerateMesh(network.verts, faces); mesh.Normals.ComputeNormals(); DA.SetDataList(0, network.verts); DA.SetDataList(1, Rlines); DA.SetDataList(2, Blines); DA.SetDataList(3, Glines); DA.SetData(4, mesh); } else { //赤レンダリング Rs.RenderBlobs(img, Render, RenderBlobsMode.Angle); Rs.RenderBlobs(img, Render, RenderBlobsMode.BoundingBox); Rs.RenderBlobs(img, Render, RenderBlobsMode.Centroid); //青レンダリング Bs.RenderBlobs(img, Render, RenderBlobsMode.Angle); Bs.RenderBlobs(img, Render, RenderBlobsMode.BoundingBox); Bs.RenderBlobs(img, Render, RenderBlobsMode.Centroid); //黒レンダリング Gs.RenderBlobs(img, Render, RenderBlobsMode.Angle); Gs.RenderBlobs(img, Render, RenderBlobsMode.BoundingBox); Gs.RenderBlobs(img, Render, RenderBlobsMode.Centroid); Cv.NamedWindow("test"); IplImage Render2 = new IplImage(img.Size.Width / 4, img.Size.Height / 4, BitDepth.U8, 3); string deb = ""; deb += "B: " + Bs.Count.ToString() + "\r\n"; deb += "R: " + Rs.Count.ToString() + "\r\n"; deb += "G: " + Gs.Count.ToString() + "\r\n"; Cv.Resize(Render, Render2); Cv.ShowImage("test", Render2); Cv.WaitKey(); Cv.DestroyWindow("test"); } Cv.ReleaseImage(img); Cv.ReleaseImage(imgHSV); }