test_consistency.py 812 B

12345678910111213141516171819202122232425
  1. import numpy as np
  2. import pytest
  3. import torch
  4. from PIL import Image
  5. import clip
  6. @pytest.mark.parametrize('model_name', clip.available_models())
  7. def test_consistency(model_name):
  8. device = "cpu"
  9. jit_model, transform = clip.load(model_name, device=device, jit=True)
  10. py_model, _ = clip.load(model_name, device=device, jit=False)
  11. image = transform(Image.open("CLIP.png")).unsqueeze(0).to(device)
  12. text = clip.tokenize(["a diagram", "a dog", "a cat"]).to(device)
  13. with torch.no_grad():
  14. logits_per_image, _ = jit_model(image, text)
  15. jit_probs = logits_per_image.softmax(dim=-1).cpu().numpy()
  16. logits_per_image, _ = py_model(image, text)
  17. py_probs = logits_per_image.softmax(dim=-1).cpu().numpy()
  18. assert np.allclose(jit_probs, py_probs, atol=0.01, rtol=0.1)