/usr/local/lib64/python3.6/site-packages/caffe2/python
NameSizeModeActions
docs/-0755rm
examples/-0755rm
fakelowp/-0755rm
helpers/-0755rm
ideep/-0755rm
layers/-0755rm
mint/-0755rm
mkl/-0755rm
modeling/-0755rm
models/-0755rm
onnx/-0755rm
operator_test/-0755rm
predictor/-0755rm
rnn/-0755rm
serialized_test/-0755rm
test/-0755rm
trt/-0755rm
__pycache__/-0755rm
allcompare_test.py22550644editdlrm
attention.py123590644editdlrm
benchmark_generator.py49120644editdlrm
binarysize.py55210644editdlrm
brew.py47620644editdlrm
brew_test.py117390644editdlrm
build.py1530644editdlrm
cached_reader.py43940644editdlrm
caffe2_pybind11_state.cpython-36m-x86_64-linux-gnu.so482997120755editdlrm
caffe2_pybind11_state_gpu.cpython-36m-x86_64-linux-gnu.so490481440755editdlrm
caffe_translator.py352270644editdlrm
caffe_translator_test.py35530644editdlrm
checkpoint.py321010644editdlrm
checkpoint_test.py134050644editdlrm
cnn.py76260644editdlrm
context.py28410644editdlrm
context_test.py17920644editdlrm
control.py193090644editdlrm
control_ops_grad.py288930644editdlrm
control_ops_grad_test.py17520644editdlrm
control_ops_util.py108630644editdlrm
control_test.py122760644editdlrm
convert.py550644editdlrm
convert_test.py2010644editdlrm
convnet_benchmarks.py205330644editdlrm
convnet_benchmarks_test.py8390644editdlrm
core.py1194000644editdlrm
core_gradients_test.py380220644editdlrm
core_test.py476830644editdlrm
crf.py132500644editdlrm
crf_predict.py11590644editdlrm
crf_viterbi_test.py16630644editdlrm
dataio.py235320644editdlrm
dataio_test.py175750644editdlrm
dataset.py128860644editdlrm
data_parallel_model.py831000644editdlrm
data_parallel_model_test.py561450644editdlrm
data_workers.py159410644editdlrm
data_workers_test.py65610644editdlrm
db_file_reader.py66080644editdlrm
db_test.py11100644editdlrm
device_checker.py51570644editdlrm
dyndep.py15330644editdlrm
embedding_generation_benchmark.py52560644editdlrm
experiment_util.py36250644editdlrm
extension_loader.py7440644editdlrm
fakefp16_transform_lib.py3220644editdlrm
filler_test.py7480644editdlrm
functional.py44150644editdlrm
functional_test.py42040644editdlrm
fused_8bit_rowwise_conversion_ops_test.py39450644editdlrm
gradient_checker.py153770644editdlrm
gradient_check_test.py207290644editdlrm
gru_cell.py51290644editdlrm
hip_test_util.py4050644editdlrm
hsm_util.py22590644editdlrm
hypothesis_test.py1057620644editdlrm
hypothesis_test_util.py268530644editdlrm
ideep_test_util.py9980644editdlrm
layers_test.py929310644editdlrm
layer_model_helper.py293400644editdlrm
layer_model_instantiator.py39350644editdlrm
layer_parameter_sharing_test.py91480644editdlrm
layer_test_util.py48750644editdlrm
lazy.py2770644editdlrm
lazy_dyndep.py25620644editdlrm
lazy_dyndep_test.py39140644editdlrm
lengths_reducer_fused_8bit_rowwise_ops_test.py75750644editdlrm
lengths_reducer_rowwise_8bit_ops_test.py57100644editdlrm
lstm_benchmark.py106490644editdlrm
memonger.py340410644editdlrm
memonger_test.py369100644editdlrm
mkl_test_util.py11420644editdlrm
model_device_test.py47770644editdlrm
model_helper.py234920644editdlrm
model_helper_test.py23360644editdlrm
modifier_context.py17720644editdlrm
muji.py81310644editdlrm
muji_test.py30580644editdlrm
net_builder.py276790644editdlrm
net_builder_test.py113820644editdlrm
net_drawer.py142640644editdlrm
net_printer.py127040644editdlrm
net_printer_test.py31900644editdlrm
nomnigraph.py42160644editdlrm
nomnigraph_test.py154270644editdlrm
nomnigraph_transformations.py37870644editdlrm
nomnigraph_transformations_test.py57670644editdlrm
normalizer.py14110644editdlrm
normalizer_context.py10070644editdlrm
normalizer_test.py4870644editdlrm
numa_benchmark.py22300644editdlrm
numa_test.py16630644editdlrm
observer_test.py53160644editdlrm
operator_fp_exceptions_test.py12480644editdlrm
optimizer.py788130644editdlrm
optimizer_context.py14620644editdlrm
optimizer_test.py307050644editdlrm
optimizer_test_util.py91870644editdlrm
parallelize_bmuf_distributed_test.py99080644editdlrm
parallel_workers.py76820644editdlrm
parallel_workers_test.py35010644editdlrm
pipeline.py172830644editdlrm
pipeline_test.py25420644editdlrm
predictor_constants.py1980644editdlrm
python_op_test.py91690644editdlrm
queue_util.py44590644editdlrm
record_queue.py44530644editdlrm
recurrent.py132970644editdlrm
regularizer.py211200644editdlrm
regularizer_context.py10130644editdlrm
regularizer_test.py102660644editdlrm
rnn_cell.py682330644editdlrm
schema.py456210644editdlrm
schema_test.py157540644editdlrm
scope.py36230644editdlrm
scope_test.py52490644editdlrm
session.py76420644editdlrm
session_test.py20780644editdlrm
sparse_to_dense_mask_test.py65650644editdlrm
sparse_to_dense_test.py35560644editdlrm
task.py242740644editdlrm
task_test.py8700644editdlrm
test_util.py35240644editdlrm
text_file_reader.py19900644editdlrm
timeout_guard.py40540644editdlrm
toy_regression_test.py28220644editdlrm
transformations.py18320644editdlrm
transformations_test.py119600644editdlrm
tt_core.py93490644editdlrm
tt_core_test.py25180644editdlrm
utils.py141810644editdlrm
utils_test.py13990644editdlrm
visualize.py63150644editdlrm
workspace.py252630644editdlrm
workspace_test.py348440644editdlrm
_import_c_extension.py22500644editdlrm
__init__.py39250644editdlrm
Edit: /usr/local/lib64/python3.6/site-packages/caffe2/python/regularizer_test.py (10266B)
import caffe2.python.hypothesis_test_util as hu import hypothesis.strategies as st import numpy as np import numpy.testing as npt from caffe2.python import core, layer_model_instantiator, regularizer, schema, workspace from caffe2.python.layer_test_util import LayersTestCase from caffe2.python.optimizer import SgdOptimizer from caffe2.python.regularizer import L1Norm, RegularizationBy from caffe2.python.regularizer_context import RegularizerContext, UseRegularizer from hypothesis import given class TestRegularizerContext(LayersTestCase): @given(X=hu.arrays(dims=[2, 5])) def test_regularizer_context(self, X): weight_reg_out = L1Norm(0.2) bias_reg_out = L1Norm(0) regularizers = {"WEIGHT": weight_reg_out, "BIAS": bias_reg_out} output_dims = 2 input_record = self.new_record(schema.Scalar((np.float32, (5,)))) schema.FeedRecord(input_record, [X]) with UseRegularizer(regularizers): weight_reg = RegularizerContext.current().get_regularizer("WEIGHT") bias_reg = RegularizerContext.current().get_regularizer("BIAS") optim = SgdOptimizer(0.15) assert ( weight_reg == weight_reg_out ), "fail to get correct weight reg from context" assert bias_reg == bias_reg_out, "fail to get correct bias reg from context" fc_output = self.model.FC( input_record, output_dims, weight_optim=optim, bias_optim=optim, weight_reg=weight_reg, bias_reg=bias_reg, ) # model.output_schema has to a struct self.model.output_schema = schema.Struct(("fc_output", fc_output)) self.assertEqual(schema.Scalar((np.float32, (output_dims,))), fc_output) _, train_net = layer_model_instantiator.generate_training_nets(self.model) ops = train_net.Proto().op ops_type_list = [ops[i].type for i in range(len(ops))] assert ops_type_list.count("LpNorm") == 2 assert ops_type_list.count("Scale") == 4 assert ops_type_list.count("LpNormGradient") == 2 class TestRegularizer(LayersTestCase): @given(X=hu.arrays(dims=[2, 5], elements=hu.floats(min_value=-1.0, max_value=1.0))) def test_log_barrier(self, X): param = core.BlobReference("X") workspace.FeedBlob(param, X) train_init_net, train_net = self.get_training_nets() reg = regularizer.LogBarrier(1.0) output = reg(train_net, train_init_net, param, by=RegularizationBy.ON_LOSS) reg( train_net, train_init_net, param, grad=None, by=RegularizationBy.AFTER_OPTIMIZER, ) workspace.RunNetOnce(train_init_net) workspace.RunNetOnce(train_net) def ref(X): return ( np.array(np.sum(-np.log(np.clip(X, 1e-9, None))) * 0.5).astype( np.float32 ), np.clip(X, 1e-9, None), ) for x, y in zip(workspace.FetchBlobs([output, param]), ref(X)): npt.assert_allclose(x, y, rtol=1e-3) @given( X=hu.arrays(dims=[2, 5], elements=hu.floats(min_value=-1.0, max_value=1.0)), left_open=st.booleans(), right_open=st.booleans(), eps=hu.floats(min_value=1e-6, max_value=1e-4), ub=hu.floats(min_value=-1.0, max_value=1.0), lb=hu.floats(min_value=-1.0, max_value=1.0), **hu.gcs_cpu_only ) def test_bounded_grad_proj(self, X, left_open, right_open, eps, ub, lb, gc, dc): if ub - (eps if right_open else 0.) < lb + (eps if left_open else 0.): return param = core.BlobReference("X") workspace.FeedBlob(param, X) train_init_net, train_net = self.get_training_nets() reg = regularizer.BoundedGradientProjection( lb=lb, ub=ub, left_open=left_open, right_open=right_open, epsilon=eps ) output = reg(train_net, train_init_net, param, by=RegularizationBy.ON_LOSS) reg( train_net, train_init_net, param, grad=None, by=RegularizationBy.AFTER_OPTIMIZER, ) workspace.RunNetOnce(train_init_net) workspace.RunNetOnce(train_net) def ref(X): return np.clip( X, lb + (eps if left_open else 0.), ub - (eps if right_open else 0.) ) assert output is None npt.assert_allclose(workspace.blobs[param], ref(X), atol=1e-7) @given( output_dim=st.integers(1, 10), input_num=st.integers(3, 30), reg_weight=st.integers(0, 10) ) def test_group_l1_norm(self, output_dim, input_num, reg_weight): """ 1. create a weight blob 2. create random group splits 3. run group_l1_nrom with the weight blob 4. run equivalent np operations to calculate group l1 norm 5. compare if the results from 3 and 4 are equal """ def compare_reference(weight, group_boundaries, reg_lambda, output): group_splits = np.hsplit(weight, group_boundaries[1:-1]) l2_reg = np.sqrt([np.sum(np.square(g)) for g in group_splits]) l2_normalized = np.multiply(l2_reg, np.array([np.sqrt(g.shape[1]) for g in group_splits])) result = np.multiply(np.sum(l2_normalized), reg_lambda) npt.assert_almost_equal(result, workspace.blobs[output], decimal=2) weight = np.random.rand(output_dim, input_num).astype(np.float32) feature_num = np.random.randint(low=1, high=input_num - 1) group_boundaries = [0] group_boundaries = np.append( group_boundaries, np.sort( np.random.choice(range(1, input_num - 1), feature_num, replace=False) ), ) group_boundaries = np.append(group_boundaries, [input_num]) split_info = np.diff(group_boundaries) weight_blob = core.BlobReference("weight_blob") workspace.FeedBlob(weight_blob, weight) train_init_net, train_net = self.get_training_nets() reg = regularizer.GroupL1Norm(reg_weight * 0.1, split_info.tolist()) output = reg( train_net, train_init_net, weight_blob, by=RegularizationBy.ON_LOSS ) workspace.RunNetOnce(train_init_net) workspace.RunNetOnce(train_net) compare_reference(weight, group_boundaries, reg_weight * 0.1, output) @given( param_dim=st.integers(10, 30), k=st.integers(5, 9), reg_weight=st.integers(0, 10) ) def test_l1_norm_trimmed(self, param_dim, k, reg_weight): weight = np.random.rand(param_dim).astype(np.float32) weight_blob = core.BlobReference("weight_blob") workspace.FeedBlob(weight_blob, weight) train_init_net, train_net = self.get_training_nets() reg = regularizer.L1NormTrimmed(reg_weight * 0.1, k) output = reg( train_net, train_init_net, weight_blob, by=RegularizationBy.ON_LOSS ) workspace.RunNetOnce(train_init_net) workspace.RunNetOnce(train_net) result = np.sum(np.sort(np.absolute(weight))[:(param_dim - k)]) * reg_weight * 0.1 npt.assert_almost_equal(result, workspace.blobs[output], decimal=2) @given( param_dim=st.integers(10, 30), k=st.integers(5, 9), l1=st.integers(0, 10), l2=st.integers(0, 10) ) def test_elastic_l1_norm_trimmed(self, param_dim, k, l1, l2): weight = np.random.rand(param_dim).astype(np.float32) weight_blob = core.BlobReference("weight_blob") workspace.FeedBlob(weight_blob, weight) train_init_net, train_net = self.get_training_nets() reg = regularizer.ElasticNetL1NormTrimmed(l1 * 0.1, l2 * 0.1, k) output = reg( train_net, train_init_net, weight_blob, by=RegularizationBy.ON_LOSS ) workspace.RunNetOnce(train_init_net) workspace.RunNetOnce(train_net) l1_norm = np.sum(np.sort(np.absolute(weight))[:(param_dim - k)]) l2_norm = np.sum(np.square(weight)) result = l1_norm * l1 * 0.1 + l2_norm * l2 * 0.1 npt.assert_almost_equal(result, workspace.blobs[output], decimal=2) @given( row_dim=st.integers(5, 10), norm=st.floats(min_value=1.0, max_value=4.0), data_strategy=st.data(), ) def test_fp16_max_norm(self, row_dim, norm, data_strategy): weight = np.random.rand(row_dim, 5).astype(np.float16) grad = np.random.rand(row_dim, 5).astype(np.float16) # generate indices that will be updated indices = data_strategy.draw( hu.tensor( dtype=np.int64, min_dim=1, max_dim=1, elements=st.sampled_from(np.arange(weight.shape[0])), ) ) indices = np.unique(indices) # compute expected result result = weight.copy() # prevent dived by zero eps = 1e-12 norms = np.sqrt(np.sum(result[indices, ] ** 2, axis=1, keepdims=True)) # if the norms are smaller than max_norm, then it doesn't need update desired = np.clip(norms, 0, norm) # apply max norm result[indices, ] *= desired / (eps + norms) weight_blob = core.BlobReference("weight_blob") workspace.FeedBlob(weight_blob, weight) grad_blob = core.BlobReference("grad_blob") workspace.FeedBlob(grad_blob, grad) indices_blob = core.BlobReference("indices") workspace.FeedBlob(indices_blob, indices) grad_blob_slice = core.GradientSlice(indices=indices_blob, values=grad_blob) train_init_net, train_net = self.get_training_nets() reg = regularizer.MaxNorm(norm, dtype='fp16') reg( train_net, train_init_net, weight_blob, grad_blob_slice, by=RegularizationBy.AFTER_OPTIMIZER ) workspace.RunNetOnce(train_init_net) workspace.RunNetOnce(train_net) npt.assert_almost_equal(result, workspace.FetchBlob('weight_blob'), decimal=2)