(model, dataset, loss, tokenizer, batch_size, num_batches)
| 223 | |
| 224 | |
| 225 | def evaluate(model, dataset, loss, tokenizer, batch_size, num_batches): |
| 226 | all_losses = [] |
| 227 | ntokens = 0 |
| 228 | |
| 229 | # num_batches can be -1 to indicate the entire set |
| 230 | index_iterator = iter(range(num_batches)) if num_batches != -1 else iter(int, 1) |
| 231 | |
| 232 | for it, batch in zip( |
| 233 | index_iterator, |
| 234 | iterate_batches(dataset, tokenizer, batch_size), |
| 235 | ): |
| 236 | losses, toks = loss(model, *batch) |
| 237 | all_losses.append((losses * toks).item()) |
| 238 | ntokens += toks.item() |
| 239 | |
| 240 | return np.sum(all_losses) / ntokens |
| 241 | |
| 242 | |
| 243 | def train(model, train_set, val_set, optimizer, loss, tokenizer, args): |
no test coverage detected