pub struct BertConfig {
pub vocab_size: usize,
pub max_position_embeddings: usize,
pub hidden_size: usize,
pub num_hidden_layers: usize,
pub num_attention_heads: usize,
pub intermediate_size: usize,
pub hidden_act: String,
pub hidden_dropout_prob: f64,
pub attention_probs_dropout_prob: f64,
pub type_vocab_size: usize,
pub layer_norm_eps: f64,
pub initializer_range: f64,
}
Expand description
Configuration for a BERT model
Fields§
§vocab_size: usize
Vocabulary size
max_position_embeddings: usize
Maximum sequence length
Hidden size
Number of hidden layers
num_attention_heads: usize
Number of attention heads
intermediate_size: usize
Intermediate size in feed-forward networks
Hidden activation function
Hidden dropout probability
attention_probs_dropout_prob: f64
Attention dropout probability
type_vocab_size: usize
Type vocabulary size (usually 2 for sentence pair tasks)
layer_norm_eps: f64
Layer norm epsilon
initializer_range: f64
Initializer range
Implementations§
Source§impl BertConfig
impl BertConfig
Sourcepub fn bert_base_uncased() -> Self
pub fn bert_base_uncased() -> Self
Create a BERT-Base configuration
Sourcepub fn bert_large_uncased() -> Self
pub fn bert_large_uncased() -> Self
Create a BERT-Large configuration
Sourcepub fn custom(
vocab_size: usize,
hidden_size: usize,
num_hidden_layers: usize,
num_attention_heads: usize,
) -> Self
pub fn custom( vocab_size: usize, hidden_size: usize, num_hidden_layers: usize, num_attention_heads: usize, ) -> Self
Create a custom BERT configuration
Examples found in repository?
examples/bert_example.rs (lines 11-16)
5fn main() -> Result<(), Box<dyn std::error::Error>> {
6 println!("BERT Model Example");
7
8 // Create a small BERT model for demonstration
9 println!("Creating a small BERT model...");
10
11 let config = BertConfig::custom(
12 10000, // vocab_size
13 128, // hidden_size
14 2, // num_hidden_layers
15 2, // num_attention_heads
16 );
17
18 let model = BertModel::<f32>::new(config)?;
19
20 // Create dummy input (batch_size=2, seq_len=16)
21 // Input tensor contains token IDs
22 let input = Array::from_shape_fn(
23 IxDyn(&[2, 16]),
24 |_| rand::random::<f32>() * 100.0, // Random token IDs between 0 and 100
25 );
26
27 println!("Input shape: {:?}", input.shape());
28
29 // Get sequence output (hidden states)
30 let sequence_output = model.forward(&input)?;
31
32 println!("Sequence output shape: {:?}", sequence_output.shape());
33
34 // Get pooled output (for classification tasks)
35 let pooled_output = model.get_pooled_output(&input)?;
36
37 println!("Pooled output shape: {:?}", pooled_output.shape());
38
39 // Let's create a BERT-Base model
40 println!("\nCreating a BERT-Base model...");
41
42 let bert_base = BertModel::<f32>::bert_base_uncased()?;
43
44 // Create dummy input for a longer sequence
45 let base_input = Array::from_shape_fn(
46 IxDyn(&[1, 64]),
47 |_| rand::random::<f32>() * 1000.0, // Random token IDs
48 );
49
50 println!("BERT-Base input shape: {:?}", base_input.shape());
51
52 // Forward pass to get pooled output
53 let base_pooled_output = bert_base.get_pooled_output(&base_input)?;
54
55 println!(
56 "BERT-Base pooled output shape: {:?}",
57 base_pooled_output.shape()
58 );
59 println!(
60 "BERT-Base hidden dimension: {}",
61 base_pooled_output.shape()[1]
62 );
63
64 println!("\nBERT example completed successfully!");
65
66 Ok(())
67}
Trait Implementations§
Source§impl Clone for BertConfig
impl Clone for BertConfig
Source§fn clone(&self) -> BertConfig
fn clone(&self) -> BertConfig
Returns a duplicate of the value. Read more
1.0.0 · Source§const fn clone_from(&mut self, source: &Self)
const fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreAuto Trait Implementations§
impl Freeze for BertConfig
impl RefUnwindSafe for BertConfig
impl Send for BertConfig
impl Sync for BertConfig
impl Unpin for BertConfig
impl UnwindSafe for BertConfig
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
Converts
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>
Converts
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