| 182 | } |
| 183 | |
| 184 | static void softmax(std::vector<float>& logits) { |
| 185 | // for numerical stability |
| 186 | float maxl = -INFINITY; |
| 187 | for (const auto& l : logits) |
| 188 | maxl = std::max(maxl, l); |
| 189 | |
| 190 | // softmax |
| 191 | float sum = 0.0; |
| 192 | for (auto& l : logits) { |
| 193 | l = exp(l - maxl); |
| 194 | sum += l; |
| 195 | } |
| 196 | |
| 197 | for (auto& l : logits) |
| 198 | l /= sum; |
| 199 | } |
| 200 | |
| 201 | static bark_token gpt_multinomial_sample( |
| 202 | std::vector<float>& logits, |
no outgoing calls
no test coverage detected