[−][src]Struct radiate::models::neat::layers::lstm::LSTM
LSTM is a long-short term memory cell represented by a collection of Dense layers and two distinct memory vectors which get updated and travel 'through time'
Fields
input_size: u32
memory_size: u32
output_size: u32
activation: Activation
memory: Vec<f32>
states: LSTMState
g_gate: Dense
i_gate: Dense
f_gate: Dense
o_gate: Dense
v_gate: Dense
Methods
impl LSTM
[src]
pub fn new(
input_size: u32,
memory_size: u32,
output_size: u32,
activation: Activation
) -> Self
[src]
input_size: u32,
memory_size: u32,
output_size: u32,
activation: Activation
) -> Self
pub fn step_back(&mut self, errors: &Vec<f32>, l_rate: f32) -> Option<Vec<f32>>
[src]
Preform one step backwards for the layer. Set the tracer historical meta data to look at the current index, and use that data to compute the gradient steps for eachweight in each gated network. If update is true, the gates will take the accumulated gradient steps, and add them to their respecive weight values
Trait Implementations
impl Clone for LSTM
[src]
Implement clone for the neat neural network in order to facilitate proper crossover and mutation for the network
fn clone(&self) -> Self
[src]
fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl Debug for LSTM
[src]
impl<'de> Deserialize<'de> for LSTM
[src]
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
[src]
__D: Deserializer<'de>,
impl Display for LSTM
[src]
implement display for the LSTM layer of the network
impl Genome<LSTM, NeatEnvironment> for LSTM where
LSTM: Layer,
[src]
LSTM: Layer,
in order for the lstm layer to be evolved along with the rest of the network, Genome must be implemented so that the layer can be crossed over and measured along with other lstm layers
fn crossover(
child: &LSTM,
parent_two: &LSTM,
env: &Arc<RwLock<NeatEnvironment>>,
crossover_rate: f32
) -> Option<LSTM>
[src]
child: &LSTM,
parent_two: &LSTM,
env: &Arc<RwLock<NeatEnvironment>>,
crossover_rate: f32
) -> Option<LSTM>
implement how to crossover two LSTM layers
fn distance(one: &LSTM, two: &LSTM, env: &Arc<RwLock<NeatEnvironment>>) -> f32
[src]
get the distance between two LSTM layers of the network
fn base(_: &mut E) -> T where
T: Sized,
[src]
T: Sized,
impl Layer for LSTM
[src]
fn forward(&mut self, inputs: &Vec<f32>) -> Option<Vec<f32>>
[src]
fn backward(
&mut self,
errors: &Vec<f32>,
learning_rate: f32
) -> Option<Vec<f32>>
[src]
&mut self,
errors: &Vec<f32>,
learning_rate: f32
) -> Option<Vec<f32>>
apply backpropagation through time
fn reset(&mut self)
[src]
reset the lstm network by clearing the tracer and the states as well as the memory and hidden state
fn add_tracer(&mut self)
[src]
add tracers to all the gates in the layer
fn remove_tracer(&mut self)
[src]
remove the tracers from all the gates in the layer
fn as_ref_any(&self) -> &dyn Any where
Self: Sized + 'static,
[src]
Self: Sized + 'static,
fn as_mut_any(&mut self) -> &mut dyn Any where
Self: Sized + 'static,
[src]
Self: Sized + 'static,
fn shape(&self) -> (usize, usize)
[src]
impl Send for LSTM
[src]
These must be implemneted for the network or any type to be used within seperate threads. Because implementing the functions themselves is dangerious and unsafe and i'm not smart enough to do that from scratch, these "implmenetaions" will get rid of the error and realistically they don't need to be implemneted for the program to work
impl Serialize for LSTM
[src]
fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error> where
__S: Serializer,
[src]
__S: Serializer,
impl Sync for LSTM
[src]
Auto Trait Implementations
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Any for T where
T: Any + Serialize + Deserialize,
[src]
T: Any + Serialize + Deserialize,
fn as_any(&self) -> &(dyn Any + 'static)
[src]
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
[src]
fn into_any(self: Box<T>) -> Box<dyn Any + 'static>
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Debug for T where
T: Debug + Serialize + Deserialize + ?Sized,
[src]
T: Debug + Serialize + Deserialize + ?Sized,
impl<T> Deserialize for T where
T: DeserializeOwned,
[src]
T: DeserializeOwned,
impl<T> DeserializeOwned for T where
T: Deserialize<'de>,
[src]
T: Deserialize<'de>,
impl<T> Display for T where
T: Display + Serialize + Deserialize + ?Sized,
[src]
T: Display + Serialize + Deserialize + ?Sized,
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<L> LayerClone for L where
L: 'static + Layer + Clone,
[src]
L: 'static + Layer + Clone,
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<T> Serialize for T where
T: Serialize + ?Sized,
[src]
T: Serialize + ?Sized,
impl<T> Serialize for T where
T: Serialize + ?Sized,
[src]
T: Serialize + ?Sized,
fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<Ok, Error>
[src]
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T> ToString for T where
T: Display + ?Sized,
[src]
T: Display + ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> Type for T where
T: ?Sized,
[src]
T: ?Sized,
default fn meta(self: *const T) -> <T as Type>::Meta
[src]
default fn data(self: *const T) -> *const ()
[src]
default fn data_mut(self: *mut T) -> *mut ()
[src]
default fn dangling(t: <T as Type>::Meta) -> NonNull<T>
[src]
default fn fatten(thin: *mut (), t: <T as Type>::Meta) -> *mut T
[src]
const METATYPE: MetaType
[src]
type Meta: 'static
fn meta_type(self: *const Self) -> MetaType
[src]
impl<T> Type for T
[src]
const METATYPE: MetaType
[src]
type Meta = Concrete
Type of metadata for type.
fn meta(self: *const T) -> <T as Type>::Meta
[src]
fn data(self: *const T) -> *const ()
[src]
fn data_mut(self: *mut T) -> *mut ()
[src]
fn dangling(_t: <T as Type>::Meta) -> NonNull<T>
[src]
fn fatten(thin: *mut (), _t: <T as Type>::Meta) -> *mut T
[src]
fn meta_type(self: *const Self) -> MetaType
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,