Skip to content

Commit 8e92399

Browse files
danieldkDaniël de Kok
authored andcommitted
Embeddings::embedding: use Storage::embeddings
This makes lookups of unknown words faster, especially for quantized embeddings.
1 parent c180cdf commit 8e92399

1 file changed

Lines changed: 3 additions & 6 deletions

File tree

src/embeddings.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use std::iter::Enumerate;
55
use std::mem;
66
use std::slice;
77

8-
use ndarray::{Array1, ArrayViewMut1, CowArray, Ix1};
8+
use ndarray::{Array1, ArrayViewMut1, Axis, CowArray, Ix1};
99
use rand::{RngCore, SeedableRng};
1010
use rand_xorshift::XorShiftRng;
1111
use reductive::pq::TrainPQ;
@@ -135,11 +135,8 @@ where
135135
match self.vocab.idx(word)? {
136136
WordIndex::Word(idx) => Some(self.storage.embedding(idx)),
137137
WordIndex::Subword(indices) => {
138-
let mut embed = Array1::zeros((self.storage.shape().1,));
139-
for idx in indices {
140-
embed += &self.storage.embedding(idx).view();
141-
}
142-
138+
let embeds = self.storage.embeddings(&indices);
139+
let mut embed = embeds.sum_axis(Axis(0));
143140
l2_normalize(embed.view_mut());
144141

145142
Some(CowArray::from(embed))

0 commit comments

Comments
 (0)