Source code for neural_network.components.edge

import random
from typing import Tuple

from .neuron import Neuron


[docs] class Edge: """Class to represent an `Edge` joining two `Nodes` of a network """
[docs] def __init__(self, left_neuron: Neuron, right_neuron: Neuron): """Constructor method Parameters ---------- left_neuron : Neuron The left `Neuron` of the edge right_neuron : Neuron The right `Neuron` of the edge """ self._left_neuron = left_neuron self._right_neuron = right_neuron left_id = left_neuron.get_id()[0] right_id = right_neuron.get_id()[0] if left_id + 1 != right_id: raise ValueError(f"Edge must connect adjacent layers " f"(left: {left_id}, right: {right_id})") self._id = (left_neuron.get_id()[0], left_neuron.get_id()[1], right_neuron.get_id()[1]) self._weight = random.uniform(-1, 1) self.loss_gradients = [] self._delta = 0.0 self._velocity = 0.0
[docs] def set_weight(self, weight: float): """Setter method Parameters ---------- weight : float The new weight """ self._weight = weight
[docs] def get_weight(self) -> float: """Getter method Returns ------- float The weight """ return self._weight
[docs] def get_left_neuron(self) -> Neuron: """Getter method Returns ------- Neuron The left Neuron """ return self._left_neuron
[docs] def get_right_neuron(self) -> Neuron: """Getter method Returns ------- float The right Neuron """ return self._right_neuron
[docs] def get_id(self) -> Tuple[int, ...]: """Getter method Returns ------- Tuple[int, ...] The id """ return self._id
[docs] def set_delta(self, delta: float): """Setter method Parameters ---------- delta : float The new delta """ self._delta = delta
[docs] def get_delta(self) -> float: """Getter method Returns ------- float The delta """ return self._delta
[docs] def set_velocity(self, velocity: float): """Setter method Parameters ---------- velocity : float The new velocity """ self._velocity = velocity
[docs] def get_velocity(self) -> float: """Getter method Returns ------- float The velocity """ return self._velocity
def __str__(self): return f"Edge between {self._left_neuron} and {self._right_neuron}"