(model, X_test, Y_test, num_classes=None, BS=128, return_predict=False, transform=lambda x: x,
target_transform=lambda y: y)
| 39 | |
| 40 | |
| 41 | def evaluate(model, X_test, Y_test, num_classes=None, BS=128, return_predict=False, transform=lambda x: x, |
| 42 | target_transform=lambda y: y): |
| 43 | Tensor.training = False |
| 44 | def numpy_eval(Y_test, num_classes): |
| 45 | Y_test_preds_out = np.zeros(list(Y_test.shape)+[num_classes]) |
| 46 | for i in trange((len(Y_test)-1)//BS+1, disable=None): |
| 47 | x = Tensor(transform(X_test[i*BS:(i+1)*BS])) |
| 48 | out = model.forward(x) if hasattr(model, 'forward') else model(x) |
| 49 | Y_test_preds_out[i*BS:(i+1)*BS] = out.numpy() |
| 50 | Y_test_preds = np.argmax(Y_test_preds_out, axis=-1) |
| 51 | Y_test = target_transform(Y_test) |
| 52 | return (Y_test == Y_test_preds).mean(), Y_test_preds |
| 53 | |
| 54 | if num_classes is None: num_classes = Y_test.max().astype(int)+1 |
| 55 | acc, Y_test_pred = numpy_eval(Y_test, num_classes) |
| 56 | print("test set accuracy is %f" % acc) |
| 57 | return (acc, Y_test_pred) if return_predict else acc |
| 58 |
searching dependent graphs…