observer_test.py 1011 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import numpy as np
  2. from caffe2.python import core, workspace
  3. from caffe2.quantization.server import dnnlowp_pybind11 # type: ignore[attr-defined]
  4. net = core.Net("test_net")
  5. X = np.array([[1, 2], [3, 4]]).astype(np.float32)
  6. W = np.array([[5, 6], [7, 8]]).astype(np.float32)
  7. b = np.array([0, 1]).astype(np.float32)
  8. workspace.FeedBlob("X", X)
  9. workspace.FeedBlob("W", W)
  10. workspace.FeedBlob("b", b)
  11. Y = net.FC(["X", "W", "b"], ["Y"])
  12. dnnlowp_pybind11.ObserveMinMaxOfOutput("test_net.minmax", 1)
  13. workspace.CreateNet(net)
  14. workspace.RunNet(net)
  15. print(workspace.FetchBlob("Y"))
  16. workspace.ResetWorkspace()
  17. workspace.FeedBlob("X", X)
  18. workspace.FeedBlob("W", W)
  19. workspace.FeedBlob("b", b)
  20. dnnlowp_pybind11.ObserveHistogramOfOutput("test_net.hist", 1)
  21. workspace.CreateNet(net)
  22. workspace.RunNet(net)
  23. workspace.FeedBlob("X", X)
  24. workspace.FeedBlob("W", W)
  25. workspace.FeedBlob("b", b)
  26. dnnlowp_pybind11.AddOutputColumnMaxHistogramObserver(
  27. net._net.name, "test_net._col_max_hist", ["Y"]
  28. )
  29. workspace.RunNet(net)