Class Network
java.lang.Object
org.apache.commons.math3.ml.neuralnet.Network
- All Implemented Interfaces:
Serializable,Iterable<Neuron>
Neural network, composed of
Neuron instances and the links
between them.
Although updating a neuron's state is thread-safe, modifying the
network's topology (adding or removing links) is not.- Since:
- 3.3
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classComparator that prescribes an order of the neurons according to the increasing order of their identifier.private static classSerialization. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final intNeuron's features set size.private final ConcurrentHashMap<Long, Set<Long>> Links.private final ConcurrentHashMap<Long, Neuron> Neurons.private final AtomicLongNext available neuron identifier.private static final longSerializable. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidAdds a link from neuronato neuronb.private voidaddLinkToLinkSet(Set<Long> linkSet, long id) Adds a link to neuronidin givenlinkSet.copy()Performs a deep copy of this instance.longcreateNeuron(double[] features) Creates a neuron and assigns it a unique identifier.private LongCreates a neuron identifier.voiddeleteLink(Neuron a, Neuron b) Deletes the link between neuronsaandb.private voiddeleteLinkFromLinkSet(Set<Long> linkSet, long id) Deletes a link to neuronidin givenlinkSet.voiddeleteNeuron(Neuron neuron) Deletes a neuron.intGets the size of the neurons' features set.getNeighbours(Iterable<Neuron> neurons) Retrieves the neurons in the neighbourhood of any neuron in theneuronslist.getNeighbours(Iterable<Neuron> neurons, Iterable<Neuron> exclude) Retrieves the neurons in the neighbourhood of any neuron in theneuronslist.getNeighbours(Neuron neuron) Retrieves the neighbours of the given neuron.getNeighbours(Neuron neuron, Iterable<Neuron> exclude) Retrieves the neighbours of the given neuron.getNeuron(long id) Retrieves the neuron with the given (unique)id.getNeurons(Comparator<Neuron> comparator) Creates a list of the neurons, sorted in a custom order.iterator()private voidPrevents proxy bypass.private ObjectCustom serialization.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface java.lang.Iterable
forEach, spliterator
-
Field Details
-
serialVersionUID
private static final long serialVersionUIDSerializable.- See Also:
-
neuronMap
Neurons. -
nextId
Next available neuron identifier. -
featureSize
private final int featureSizeNeuron's features set size. -
linkMap
Links.
-
-
Constructor Details
-
Network
Network(long nextId, int featureSize, Neuron[] neuronList, long[][] neighbourIdList) Constructor with restricted access, solely used for deserialization.- Parameters:
nextId- Next available identifier.featureSize- Number of features.neuronList- Neurons.neighbourIdList- Links associated to each of the neurons inneuronList.- Throws:
MathIllegalStateException- if an inconsistency is detected (which probably means that the serialized form has been corrupted).
-
Network
public Network(long initialIdentifier, int featureSize) - Parameters:
initialIdentifier- Identifier for the first neuron that will be added to this network.featureSize- Size of the neuron's features.
-
-
Method Details
-
copy
Performs a deep copy of this instance. Upon return, the copied and original instances will be independent: Updating one will not affect the other.- Returns:
- a new instance with the same state as this instance.
- Since:
- 3.6
-
iterator
-
getNeurons
Creates a list of the neurons, sorted in a custom order.- Parameters:
comparator-Comparatorused for sorting the neurons.- Returns:
- a list of neurons, sorted in the order prescribed by the
given
comparator. - See Also:
-
createNeuron
public long createNeuron(double[] features) Creates a neuron and assigns it a unique identifier.- Parameters:
features- Initial values for the neuron's features.- Returns:
- the neuron's identifier.
- Throws:
DimensionMismatchException- if the length offeaturesis different from the expected size (as set by theconstructor).
-
deleteNeuron
Deletes a neuron. Links from all neighbours to the removed neuron will also bedeleted.- Parameters:
neuron- Neuron to be removed from this network.- Throws:
NoSuchElementException- ifndoes not belong to this network.
-
getFeaturesSize
public int getFeaturesSize()Gets the size of the neurons' features set.- Returns:
- the size of the features set.
-
addLink
Adds a link from neuronato neuronb. Note: the link is not bi-directional; if a bi-directional link is required, an additional call must be made withaandbexchanged in the argument list.- Parameters:
a- Neuron.b- Neuron.- Throws:
NoSuchElementException- if the neurons do not exist in the network.
-
addLinkToLinkSet
Adds a link to neuronidin givenlinkSet. Note: no check verifies that the identifier indeed belongs to this network.- Parameters:
linkSet- Neuron identifier.id- Neuron identifier.
-
deleteLink
Deletes the link between neuronsaandb.- Parameters:
a- Neuron.b- Neuron.- Throws:
NoSuchElementException- if the neurons do not exist in the network.
-
deleteLinkFromLinkSet
Deletes a link to neuronidin givenlinkSet. Note: no check verifies that the identifier indeed belongs to this network.- Parameters:
linkSet- Neuron identifier.id- Neuron identifier.
-
getNeuron
Retrieves the neuron with the given (unique)id.- Parameters:
id- Identifier.- Returns:
- the neuron associated with the given
id. - Throws:
NoSuchElementException- if the neuron does not exist in the network.
-
getNeighbours
Retrieves the neurons in the neighbourhood of any neuron in theneuronslist.- Parameters:
neurons- Neurons for which to retrieve the neighbours.- Returns:
- the list of neighbours.
- See Also:
-
getNeighbours
Retrieves the neurons in the neighbourhood of any neuron in theneuronslist. Theexcludelist allows to retrieve the "concentric" neighbourhoods by removing the neurons that belong to the inner "circles".- Parameters:
neurons- Neurons for which to retrieve the neighbours.exclude- Neurons to exclude from the returned list. Can benull.- Returns:
- the list of neighbours.
-
getNeighbours
Retrieves the neighbours of the given neuron.- Parameters:
neuron- Neuron for which to retrieve the neighbours.- Returns:
- the list of neighbours.
- See Also:
-
getNeighbours
Retrieves the neighbours of the given neuron.- Parameters:
neuron- Neuron for which to retrieve the neighbours.exclude- Neurons to exclude from the returned list. Can benull.- Returns:
- the list of neighbours.
-
createNextId
Creates a neuron identifier.- Returns:
- a value that will serve as a unique identifier.
-
readObject
Prevents proxy bypass.- Parameters:
in- Input stream.
-
writeReplace
Custom serialization.- Returns:
- the proxy instance that will be actually serialized.
-