public Neuron(int id, CnnNet cnnNet, IEnumerable <AxonGuidanceForceBase> axonGuidanceForces, IEnumerable <SomaGuidanceForceBase> somaGuidanceForces, NeuronType type) { Contract.Requires <ArgumentException>(id >= 0); Contract.Requires <ArgumentNullException>(cnnNet != null); Contract.Requires <ArgumentNullException>(axonGuidanceForces != null); Contract.Requires <ArgumentNullException>(somaGuidanceForces != null); Id = id; Network = cnnNet; AxonWayPoints = new List <NeuronAxonWaypoint> { new NeuronAxonWaypoint(1, this, new Point(PosX, PosY)) }; AxonGuidanceForces = new ReadOnlyCollection <AxonGuidanceForceBase>(axonGuidanceForces.ToList()); SomaGuidanceForces = new ReadOnlyCollection <SomaGuidanceForceBase>(somaGuidanceForces.ToList()); Type = type; HasSomaReachedFinalPosition = Type == NeuronType.Input || Type == NeuronType.Output; HasAxonReachedFinalPosition = Type == NeuronType.Output; _synapses = new List <DendricSynapse>(); _synapsesActivationHistory = new FixedSizedQueue <DendricSynapse[]>(cnnNet.NeuronActivityHistoryLength); _random = new Random(); }
public ViewerNetworkUndesirability(CnnNet network) : base(network.Width, network.Height, true) { Contract.Requires <ArgumentNullException>(network != null); _network = network; }
public Neuron(int id, CnnNet cnnNet, IEnumerable<AxonGuidanceForceBase> axonGuidanceForces, IEnumerable<SomaGuidanceForceBase> somaGuidanceForces, NeuronType type) { Contract.Requires<ArgumentException>(id >= 0); Contract.Requires<ArgumentNullException>(cnnNet != null); Contract.Requires<ArgumentNullException>(axonGuidanceForces != null); Contract.Requires<ArgumentNullException>(somaGuidanceForces != null); Id = id; Network = cnnNet; AxonWayPoints = new List<NeuronAxonWaypoint> { new NeuronAxonWaypoint(1, this, new Point(PosX, PosY)) }; AxonGuidanceForces = new ReadOnlyCollection<AxonGuidanceForceBase>(axonGuidanceForces.ToList()); SomaGuidanceForces = new ReadOnlyCollection<SomaGuidanceForceBase>(somaGuidanceForces.ToList()); Type = type; HasSomaReachedFinalPosition = Type == NeuronType.Input || Type == NeuronType.Output; HasAxonReachedFinalPosition = Type == NeuronType.Output; _synapses = new List<DendricSynapse>(); _synapsesActivationHistory = new FixedSizedQueue<DendricSynapse[]>(cnnNet.NeuronActivityHistoryLength); _random = new Random(); }
public static Neuron[] GetNeuronsWithinRange(int posX, int posY, CnnNet network, int range) { var result = new List <Neuron>(); int minX = Math.Max(posX - range, 0); int maxX = Math.Min(posX + range, network.Width - 1); int minY = Math.Max(posY - range, 0); int maxY = Math.Min(posY + range, network.Height - 1); for (int y = minY; y < maxY; y++) { for (int x = minX; x < maxX; x++) { if ((x == posX && y == posY) || GetDistance(posX, posY, x, y) > range) { continue; } var neuron = GetNeuronAt(y, x, network); if (neuron != null) { result.Add(neuron); } } } return(result.ToArray()); }
public static Neuron GetClosestNeuronsWithinRange(int posX, int posY, CnnNet network, int range) { Neuron result = null; int minX = Math.Max(posX - range, 0); int maxX = Math.Min(posX + range, network.Width - 1); int minY = Math.Max(posY - range, 0); int maxY = Math.Min(posY + range, network.Height - 1); double minDistance = double.MaxValue; for (int y = minY; y < maxY; y++) { for (int x = minX; x < maxX; x++) { double distance; if ((distance = GetDistance(posX, posY, x, y)) > range || distance > minDistance) { continue; } var neuron = GetNeuronAt(y, x, network); if (neuron != null) { minDistance = distance; result = neuron; } } } return(result); }
protected GuidanceForceBase(int guidanceForceRange, CnnNet network) { Contract.Requires <ArgumentOutOfRangeException>(guidanceForceRange > 0); Contract.Requires <ArgumentNullException>(network != null); GuidanceForceRange = guidanceForceRange; Network = network; GuidanceForceHeight = GuidanceForceWidth = 2 * GuidanceForceRange + 1; }
public ViewerManagerNetwork(CnnNet network) : base(network.Width, network.Height) { Contract.Requires <ArgumentNullException>(network != null); _network = network; _neuronIconDestRect = new Rect(0, 0, Resources.NeuronIdle.PixelWidth, Resources.NeuronIdle.PixelHeight); _neuronIconSourceRect = new Rect(0, 0, Resources.NeuronIdle.PixelWidth, Resources.NeuronIdle.PixelHeight); }
protected GuidanceForceBase(int guidanceForceRange, CnnNet network) { Contract.Requires<ArgumentOutOfRangeException>(guidanceForceRange > 0); Contract.Requires<ArgumentNullException>(network != null); GuidanceForceRange = guidanceForceRange; Network = network; GuidanceForceHeight = GuidanceForceWidth = 2 * GuidanceForceRange + 1; }
public PushPullBoxActivityGenerator(CnnNet network, IEnumerable<Neuron> inputNeurons, IEnumerable<Neuron> outputNeurons) { Contract.Requires<ArgumentNullException>(network != null); Contract.Requires<ArgumentNullException>(inputNeurons != null); Contract.Requires<ArgumentNullException>(outputNeurons != null); _network = network; _inputNeurons = inputNeurons; _outputNeurons = outputNeurons; _remainingActivations = _network.NeuronInputMaxConsecutiveActivations; }
public PushPullBoxActivityGenerator(CnnNet network, IEnumerable <Neuron> inputNeurons, IEnumerable <Neuron> outputNeurons) { Contract.Requires <ArgumentNullException>(network != null); Contract.Requires <ArgumentNullException>(inputNeurons != null); Contract.Requires <ArgumentNullException>(outputNeurons != null); _network = network; _inputNeurons = inputNeurons; _outputNeurons = outputNeurons; _remainingActivations = _network.NeuronInputMaxConsecutiveActivations; }
private void OnWindowLoaded(object sender, RoutedEventArgs e) { Network = new CnnNet(Constants.NetworkWidth, Constants.NetworkHeight); #region Viewer Network InitializeViewer(_viewerManager = new ViewerManagerNetwork(Network), new ViewerBase[] { _viewerDesirability = new ViewerNetworkDesirability(Network), _viewerUndesirability = new ViewerNetworkUndesirability(Network) }, ImageNetwork); _viewerManager.NeuronSelectedChanged += OnViewerManagerNeuronSelectedChanged; #endregion #region Viewer Axon Terminal Guidance Forces InitializeViewer (_viewerManagerAxonTerminal = new ViewerManager (Constants.AxonGuidanceForcesImageWidth, Constants.AxonGuidanceForcesImageHeight, true), new ViewerBase[] { _viewerAxonTerminalGuidanceForces = new ViewerGuidanceForce(Network.AxonGuidanceForces.ElementAt(0), ColorIndex.Green) }, ImageAxonTerminalGuidanceForces); #endregion #region Viewer Soma Guidance Forces InitializeViewer (_viewerManagerSoma = new ViewerManager (Constants.SomaGuidanceForcesImageWidth, Constants.SomaGuidanceForcesImageHeight, true), new ViewerBase[] { _viewerSomaDesirabilityMapGuidanceForce = new ViewerGuidanceForce(Network.SomaGuidanceForces.ElementAt(0), ColorIndex.Green) }, ImageSomaDesirabilityMapGuidanceForce); #endregion Network.ActiveNeuronGenerator = cboxGenerateInput.IsChecked.Value ? Network.NormalActiveNeuronGenerator : Network.BindedActiveNeuronGenerator; CompositionTarget.Rendering += OnCompositionTargetRendering; }
protected SomaGuidanceForceBase(CnnNet network) : base(network.SomaGuidanceForceSearchPlainRange, network) { Contract.Requires<ArgumentNullException>(network != null); }
public static Neuron GetNeuronAt(int y, int x, CnnNet network) { return(network.NeuronPositionMap[y, x]); }
/// <summary> /// Remember to optimize this by using spiral matrix processing /// http://pastebin.com/4EYJvv5X /// </summary> /// <param name="referenceY"></param> /// <param name="referenceX"></param> /// <param name="neuron"></param> /// <returns></returns> public static double GetDistanceToNearestNeuron(int referenceY, int referenceX, Neuron neuron, CnnNet network) { double minDistance = network.MinDistanceBetweenNeurons + 1; int xMin = Math.Max(referenceX - network.MinDistanceBetweenNeurons, 0); int xMax = Math.Min(referenceX + network.MinDistanceBetweenNeurons, network.Width - 1); int yMin = Math.Max(referenceY - network.MinDistanceBetweenNeurons, 0); int yMax = Math.Min(referenceY + network.MinDistanceBetweenNeurons, network.Height - 1); for (int y = yMin; y <= yMax; y++) { for (int x = xMin; x < xMax; x++) { if (network.NeuronPositionMap[y, x] != null && network.NeuronPositionMap[y, x] != neuron) { var distance = Extensions.GetDistance(referenceX, referenceY, x, y); if (minDistance > distance) { minDistance = distance; } } } } return(minDistance); }
public static Neuron[] GetNeuronsWithAxonTerminalWithinRange(int posX, int posY, CnnNet network, int range) { int minX = Math.Max(posX - range, 0); int maxX = Math.Min(posX + range, network.Width - 1); int minY = Math.Max(posY - range, 0); int maxY = Math.Min(posY + range, network.Height - 1); return(network.Neurons.Where (neuron => neuron.PosX != posX && neuron.PosY != posY && neuron.HasAxonReachedFinalPosition && minX <= neuron.AxonTerminal.X && neuron.AxonTerminal.X <= maxX && minY <= neuron.AxonTerminal.Y && neuron.AxonTerminal.Y <= maxY && GetDistance(neuron.AxonTerminal.X, neuron.AxonTerminal.Y, posX, posY) <= range).ToArray()); }
public AxonFollowExistingGuidanceForce(CnnNet network) : base(network) { Contract.Requires <ArgumentNullException>(network != null); }
public AxonFollowExistingGuidanceForce(CnnNet network) : base(network) { Contract.Requires<ArgumentNullException>(network != null); }
public SomaDesirabilityMapGuidanceForce(CnnNet network) : base(network) { Contract.Requires <ArgumentNullException>(network != null); }
protected AxonGuidanceForceBase(CnnNet network) : base(network.AxonGuidanceForceSearchPlainRange, network) { Contract.Requires <ArgumentNullException>(network != null); }
public AxonUndesirabilityMapGuidanceForce(CnnNet network) : base(network) { Contract.Requires<ArgumentNullException>(network != null); }