Download lib/python3.9/site-packages/caffe2/python/caffe_translator_test.py from camenduru/slahmr-test: direct link, hf CLI and curl.
- Browser
- Download file 3.55 kB
-
https://huggingface.co/camenduru/slahmr-test/resolve/main/lib/python3.9/site-packages/caffe2/python/caffe_translator_test.py
- Command line
-
hf download hf://camenduru/slahmr-test/lib/python3.9/site-packages/caffe2/python/caffe_translator_test.py
-
curl -L -o caffe_translator_test.py https://huggingface.co/camenduru/slahmr-test/resolve/main/lib/python3.9/site-packages/caffe2/python/caffe_translator_test.py
3.55 kB
| # This a large test that goes through the translation of the bvlc caffenet | |
| # model, runs an example through the whole model, and verifies numerically | |
| # that all the results look right. In default, it is disabled unless you | |
| # explicitly want to run it. | |
| from google.protobuf import text_format | |
| import numpy as np | |
| import os | |
| import sys | |
| CAFFE_FOUND = False | |
| try: | |
| from caffe.proto import caffe_pb2 | |
| from caffe2.python import caffe_translator | |
| CAFFE_FOUND = True | |
| except Exception as e: | |
| # Safeguard so that we only catch the caffe module not found exception. | |
| if ("'caffe'" in str(e)): | |
| print( | |
| "PyTorch/Caffe2 now requires a separate installation of caffe. " | |
| "Right now, this is not found, so we will skip the caffe " | |
| "translator test.") | |
| from caffe2.python import utils, workspace, test_util | |
| import unittest | |
| def setUpModule(): | |
| # Do nothing if caffe and test data is not found | |
| if not (CAFFE_FOUND and os.path.exists('data/testdata/caffe_translator')): | |
| return | |
| # We will do all the computation stuff in the global space. | |
| caffenet = caffe_pb2.NetParameter() | |
| caffenet_pretrained = caffe_pb2.NetParameter() | |
| with open('data/testdata/caffe_translator/deploy.prototxt') as f: | |
| text_format.Merge(f.read(), caffenet) | |
| with open('data/testdata/caffe_translator/' | |
| 'bvlc_reference_caffenet.caffemodel') as f: | |
| caffenet_pretrained.ParseFromString(f.read()) | |
| for remove_legacy_pad in [True, False]: | |
| net, pretrained_params = caffe_translator.TranslateModel( | |
| caffenet, caffenet_pretrained, is_test=True, | |
| remove_legacy_pad=remove_legacy_pad | |
| ) | |
| with open('data/testdata/caffe_translator/' | |
| 'bvlc_reference_caffenet.translatedmodel', | |
| 'w') as fid: | |
| fid.write(str(net)) | |
| for param in pretrained_params.protos: | |
| workspace.FeedBlob(param.name, utils.Caffe2TensorToNumpyArray(param)) | |
| # Let's also feed in the data from the Caffe test code. | |
| data = np.load('data/testdata/caffe_translator/data_dump.npy').astype( | |
| np.float32) | |
| workspace.FeedBlob('data', data) | |
| # Actually running the test. | |
| workspace.RunNetOnce(net.SerializeToString()) | |
| class TestNumericalEquivalence(test_util.TestCase): | |
| def testBlobs(self): | |
| names = [ | |
| "conv1", "pool1", "norm1", "conv2", "pool2", "norm2", "conv3", | |
| "conv4", "conv5", "pool5", "fc6", "fc7", "fc8", "prob" | |
| ] | |
| for name in names: | |
| print('Verifying {}'.format(name)) | |
| caffe2_result = workspace.FetchBlob(name) | |
| reference = np.load( | |
| 'data/testdata/caffe_translator/' + name + '_dump.npy' | |
| ) | |
| self.assertEqual(caffe2_result.shape, reference.shape) | |
| scale = np.max(caffe2_result) | |
| np.testing.assert_almost_equal( | |
| caffe2_result / scale, | |
| reference / scale, | |
| decimal=5 | |
| ) | |
| if __name__ == '__main__': | |
| if len(sys.argv) == 1: | |
| print( | |
| 'If you do not explicitly ask to run this test, I will not run it. ' | |
| 'Pass in any argument to have the test run for you.' | |
| ) | |
| sys.exit(0) | |
| unittest.main() | |