Struct MultiHeadAttentionConfig
pub struct MultiHeadAttentionConfig {
pub d_model: usize,
pub n_heads: usize,
pub dropout: f64,
pub min_float: f64,
pub quiet_softmax: bool,
pub initializer: Initializer,
pub key_bias: bool,
pub value_bias: bool,
pub query_bias: bool,
pub output_bias: bool,
}Expand description
Configuration to create a Multi Head Attention layer using the init function.
Fields§
§d_model: usizeThe size of each linear layer.
n_heads: usizeThe number of heads.
dropout: f64The dropout rate. Default: 0.1
min_float: f64The minimum value a float can take. Default: -1.0e4 This is used to mask attention scores before calculating attention weights. A value too low might result in NaN.
quiet_softmax: boolUse “quiet softmax” instead of regular softmax.
- Usage may improve performance by allowing attention heads to deposit no information (if the sequence contains no information relevant to that head).
- Usage may reduce the entropy of weights in the model, enhancing quantization and compression.
Reference: https://www.evanmiller.org/attention-is-off-by-one.html
initializer: InitializerThe type of function used to initialize neural network parameters
key_bias: boolEnable bias for the key Linear layer.
value_bias: boolEnable bias for the value Linear layer.
query_bias: boolEnable bias for the query Linear layer.
output_bias: boolEnable bias for the output Linear layer.
Implementations§
§impl MultiHeadAttentionConfig
impl MultiHeadAttentionConfig
pub fn new(d_model: usize, n_heads: usize) -> MultiHeadAttentionConfig
pub fn new(d_model: usize, n_heads: usize) -> MultiHeadAttentionConfig
Create a new instance of the config.
§Arguments
§Required Arguments
§d_model
The size of each linear layer.
§n_heads
The number of heads.
§Default Arguments
§dropout
The dropout rate. Default: 0.1
- Defaults to
0.1
§min_float
The minimum value a float can take. Default: -1.0e4 This is used to mask attention scores before calculating attention weights. A value too low might result in NaN.
- Defaults to
-1.0e4
§quiet_softmax
Use “quiet softmax” instead of regular softmax.
- Usage may improve performance by allowing attention heads to deposit no information (if the sequence contains no information relevant to that head).
- Usage may reduce the entropy of weights in the model, enhancing quantization and compression.
Reference: https://www.evanmiller.org/attention-is-off-by-one.html
- Defaults to
false
§initializer
The type of function used to initialize neural network parameters
- Defaults to
"Initializer::KaimingUniform{gain:1.0/num_traits::Float::sqrt(3.0), fan_out_only:false}"
§key_bias
Enable bias for the key Linear layer.
- Defaults to
true
§value_bias
Enable bias for the value Linear layer.
- Defaults to
true
§query_bias
Enable bias for the query Linear layer.
- Defaults to
true
§output_bias
Enable bias for the output Linear layer.
- Defaults to
true
§impl MultiHeadAttentionConfig
impl MultiHeadAttentionConfig
pub fn with_dropout(self, dropout: f64) -> MultiHeadAttentionConfig
pub fn with_dropout(self, dropout: f64) -> MultiHeadAttentionConfig
pub fn with_min_float(self, min_float: f64) -> MultiHeadAttentionConfig
pub fn with_min_float(self, min_float: f64) -> MultiHeadAttentionConfig
Sets the value for the field min_float.
The minimum value a float can take. Default: -1.0e4 This is used to mask attention scores before calculating attention weights. A value too low might result in NaN.
- Defaults to
-1.0e4
pub fn with_quiet_softmax(self, quiet_softmax: bool) -> MultiHeadAttentionConfig
pub fn with_quiet_softmax(self, quiet_softmax: bool) -> MultiHeadAttentionConfig
Sets the value for the field quiet_softmax.
Use “quiet softmax” instead of regular softmax.
- Usage may improve performance by allowing attention heads to deposit no information (if the sequence contains no information relevant to that head).
- Usage may reduce the entropy of weights in the model, enhancing quantization and compression.
Reference: https://www.evanmiller.org/attention-is-off-by-one.html
- Defaults to
false
pub fn with_initializer(
self,
initializer: Initializer,
) -> MultiHeadAttentionConfig
pub fn with_initializer( self, initializer: Initializer, ) -> MultiHeadAttentionConfig
Sets the value for the field initializer.
The type of function used to initialize neural network parameters
- Defaults to
"Initializer::KaimingUniform{gain:1.0/num_traits::Float::sqrt(3.0), fan_out_only:false}"
pub fn with_key_bias(self, key_bias: bool) -> MultiHeadAttentionConfig
pub fn with_key_bias(self, key_bias: bool) -> MultiHeadAttentionConfig
pub fn with_value_bias(self, value_bias: bool) -> MultiHeadAttentionConfig
pub fn with_value_bias(self, value_bias: bool) -> MultiHeadAttentionConfig
pub fn with_query_bias(self, query_bias: bool) -> MultiHeadAttentionConfig
pub fn with_query_bias(self, query_bias: bool) -> MultiHeadAttentionConfig
pub fn with_output_bias(self, output_bias: bool) -> MultiHeadAttentionConfig
pub fn with_output_bias(self, output_bias: bool) -> MultiHeadAttentionConfig
§impl MultiHeadAttentionConfig
impl MultiHeadAttentionConfig
pub fn init(&self, device: &Device) -> MultiHeadAttention
pub fn init(&self, device: &Device) -> MultiHeadAttention
Initialize a new multihead attention module.
Trait Implementations§
§impl Clone for MultiHeadAttentionConfig
impl Clone for MultiHeadAttentionConfig
§fn clone(&self) -> MultiHeadAttentionConfig
fn clone(&self) -> MultiHeadAttentionConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Config for MultiHeadAttentionConfig
impl Config for MultiHeadAttentionConfig
§impl Debug for MultiHeadAttentionConfig
impl Debug for MultiHeadAttentionConfig
§impl<'de> Deserialize<'de> for MultiHeadAttentionConfig
impl<'de> Deserialize<'de> for MultiHeadAttentionConfig
§fn deserialize<D>(
deserializer: D,
) -> Result<MultiHeadAttentionConfig, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
fn deserialize<D>(
deserializer: D,
) -> Result<MultiHeadAttentionConfig, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
§impl Display for MultiHeadAttentionConfig
impl Display for MultiHeadAttentionConfig
§impl Serialize for MultiHeadAttentionConfig
impl Serialize for MultiHeadAttentionConfig
§fn serialize<S>(
&self,
serializer: S,
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
fn serialize<S>(
&self,
serializer: S,
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
Auto Trait Implementations§
impl Freeze for MultiHeadAttentionConfig
impl RefUnwindSafe for MultiHeadAttentionConfig
impl Send for MultiHeadAttentionConfig
impl Sync for MultiHeadAttentionConfig
impl Unpin for MultiHeadAttentionConfig
impl UnsafeUnpin for MultiHeadAttentionConfig
impl UnwindSafe for MultiHeadAttentionConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<K, Q> Comparable<Q> for K
impl<K, Q> Comparable<Q> for K
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
§impl<K, Q> Equivalent<Q> for K
impl<K, Q> Equivalent<Q> for K
§fn equivalent(&self, key: &Q) -> bool
fn equivalent(&self, key: &Q) -> bool
key and return true if they are equal.impl<T> ErasedDestructor for Twhere
T: 'static,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
§impl<T> ToCompactString for Twhere
T: Display,
impl<T> ToCompactString for Twhere
T: Display,
§fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
ToCompactString::to_compact_string()] Read more§fn to_compact_string(&self) -> CompactString
fn to_compact_string(&self) -> CompactString
CompactString]. Read more