/usr/local/lib64/python3.6/site-packages/caffe2/python/operator_test
NameSizeModeActions
__pycache__/-0755rm
activation_ops_test.py96910644editdlrm
adadelta_test.py79320644editdlrm
adagrad_test.py75860644editdlrm
adagrad_test_helper.py51810644editdlrm
adam_test.py215590644editdlrm
affine_channel_op_test.py37840644editdlrm
alias_with_name_test.py9380644editdlrm
apmeter_test.py27380644editdlrm
arg_ops_test.py19170644editdlrm
assert_test.py7970644editdlrm
async_net_barrier_test.py9460644editdlrm
atomic_ops_test.py41040644editdlrm
basic_rnn_test.py47200644editdlrm
batch_box_cox_test.py50800644editdlrm
batch_bucketize_op_test.py37300644editdlrm
batch_moments_op_test.py27950644editdlrm
batch_sparse_to_dense_op_test.py41990644editdlrm
bbox_transform_test.py122580644editdlrm
bisect_percentile_op_test.py62270644editdlrm
blobs_queue_db_test.py32400644editdlrm
boolean_mask_test.py163890644editdlrm
boolean_unmask_test.py17110644editdlrm
box_with_nms_limit_op_test.py87500644editdlrm
bucketize_op_test.py9300644editdlrm
cast_op_test.py16000644editdlrm
ceil_op_test.py8880644editdlrm
channel_backprop_stats_op_test.py21310644editdlrm
channel_shuffle_test.py17940644editdlrm
channel_stats_op_test.py26390644editdlrm
checkpoint_test.py15000644editdlrm
clip_op_test.py19840644editdlrm
clip_tensor_op_test.py20760644editdlrm
collect_and_distribute_fpn_rpn_proposals_op_test.py112690644editdlrm
concat_op_cost_test.py28580644editdlrm
concat_split_op_test.py72660644editdlrm
conditional_test.py9950644editdlrm
conftest.py14460644editdlrm
conv_test.py324730644editdlrm
conv_transpose_test.py159450644editdlrm
copy_ops_test.py73740644editdlrm
copy_rows_to_tensor_op_test.py25260644editdlrm
cosine_embedding_criterion_op_test.py19530644editdlrm
counter_ops_test.py33480644editdlrm
crf_test.py53150644editdlrm
cross_entropy_ops_test.py100850644editdlrm
ctc_beam_search_decoder_op_test.py51970644editdlrm
ctc_greedy_decoder_op_test.py47430644editdlrm
cudnn_recurrent_test.py58170644editdlrm
dataset_ops_test.py238470644editdlrm
data_couple_op_test.py8580644editdlrm
decay_adagrad_test.py26940644editdlrm
deform_conv_test.py192760644editdlrm
dense_vector_to_id_list_op_test.py20440644editdlrm
depthwise_3x3_conv_test.py18630644editdlrm
detectron_keypoints.py79730644editdlrm
distance_op_test.py43510644editdlrm
dropout_op_test.py29710644editdlrm
duplicate_operands_test.py7340644editdlrm
elementwise_linear_op_test.py13820644editdlrm
elementwise_logical_ops_test.py46170644editdlrm
elementwise_ops_test.py333540644editdlrm
elementwise_op_broadcast_test.py174660644editdlrm
emptysample_ops_test.py19770644editdlrm
enforce_finite_op_test.py12860644editdlrm
ensure_clipped_test.py15050644editdlrm
ensure_cpu_output_op_test.py12440644editdlrm
erf_op_test.py7490644editdlrm
expand_op_test.py21090644editdlrm
fc_operator_test.py37200644editdlrm
feature_maps_ops_test.py214920644editdlrm
filler_ops_test.py84760644editdlrm
find_op_test.py13160644editdlrm
flatten_op_test.py9220644editdlrm
flexible_top_k_test.py26090644editdlrm
floor_op_test.py8940644editdlrm
fused_nbit_rowwise_conversion_ops_test.py140770644editdlrm
fused_nbit_rowwise_test_helper.py26930644editdlrm
gather_ops_test.py92160644editdlrm
gather_ranges_op_test.py91250644editdlrm
given_tensor_byte_string_to_uint8_fill_op_test.py13920644editdlrm
given_tensor_fill_op_test.py15030644editdlrm
glu_op_test.py12120644editdlrm
group_conv_test.py28700644editdlrm
group_norm_op_test.py52520644editdlrm
gru_test.py129320644editdlrm
heatmap_max_keypoint_op_test.py47700644editdlrm
histogram_test.py30970644editdlrm
hsm_test.py94560644editdlrm
hyperbolic_ops_test.py14720644editdlrm
im2col_col2im_test.py43110644editdlrm
image_input_op_test.py173450644editdlrm
index_hash_ops_test.py28850644editdlrm
index_ops_test.py45970644editdlrm
instance_norm_test.py99170644editdlrm
integral_image_ops_test.py34190644editdlrm
jsd_ops_test.py10440644editdlrm
key_split_ops_test.py12890644editdlrm
lars_test.py13540644editdlrm
layer_norm_op_test.py149830644editdlrm
leaky_relu_test.py56390644editdlrm
learning_rate_adaption_op_test.py28370644editdlrm
learning_rate_op_test.py86520644editdlrm
lengths_pad_op_test.py16250644editdlrm
lengths_reducer_fused_nbit_rowwise_ops_test.py154950644editdlrm
lengths_tile_op_test.py13320644editdlrm
lengths_top_k_ops_test.py23710644editdlrm
length_split_op_test.py48680644editdlrm
listwise_l2r_operator_test.py87400644editdlrm
load_save_test.py332410644editdlrm
locally_connected_op_test.py77610644editdlrm
loss_ops_test.py9020644editdlrm
lpnorm_op_test.py27250644editdlrm
map_ops_test.py22490644editdlrm
margin_ranking_criterion_op_test.py18160644editdlrm
math_ops_test.py16030644editdlrm
matmul_op_test.py100960644editdlrm
mean_op_test.py14690644editdlrm
merge_id_lists_op_test.py29890644editdlrm
mkl_conv_op_test.py15470644editdlrm
mkl_packed_fc_op_test.py26470644editdlrm
mod_op_test.py14590644editdlrm
moments_op_test.py17220644editdlrm
momentum_sgd_test.py64800644editdlrm
mpi_test.py81540644editdlrm
mul_gradient_benchmark.py15090644editdlrm
negate_gradient_op_test.py15180644editdlrm
ngram_ops_test.py23270644editdlrm
normalize_op_test.py16790644editdlrm
numpy_tile_op_test.py19240644editdlrm
one_hot_ops_test.py74780644editdlrm
onnx_while_test.py30700644editdlrm
order_switch_test.py13060644editdlrm
pack_ops_test.py126340644editdlrm
pack_rnn_sequence_op_test.py28910644editdlrm
pad_test.py13770644editdlrm
partition_ops_test.py68380644editdlrm
percentile_op_test.py44270644editdlrm
piecewise_linear_transform_test.py61870644editdlrm
pooling_test.py165080644editdlrm
prepend_dim_test.py15050644editdlrm
python_op_test.py13120644editdlrm
quantile_test.py32760644editdlrm
rand_quantization_op_speed_test.py31280644editdlrm
rank_loss_operator_test.py57520644editdlrm
rebatching_queue_test.py90470644editdlrm
record_queue_test.py31250644editdlrm
recurrent_network_test.py140480644editdlrm
recurrent_net_executor_test.py109220644editdlrm
reduce_ops_test.py173410644editdlrm
reduction_ops_test.py46640644editdlrm
reshape_ops_test.py82110644editdlrm
resize_op_test.py94170644editdlrm
rmac_regions_op_test.py31780644editdlrm
rms_norm_op_test.py13250644editdlrm
rnn_cell_test.py597070644editdlrm
roi_align_rotated_op_test.py75670644editdlrm
rowwise_counter_test.py22050644editdlrm
scale_op_test.py21770644editdlrm
segment_ops_test.py257450644editdlrm
self_binning_histogram_test.py129150644editdlrm
selu_op_test.py32320644editdlrm
sequence_ops_test.py160000644editdlrm
shape_inference_test.py257080644editdlrm
sinusoid_position_encoding_op_test.py23080644editdlrm
softmax_ops_test.py236850644editdlrm
softplus_op_test.py5160644editdlrm
sparse_dropout_with_replacement_op_test.py28850644editdlrm
sparse_gradient_checker_test.py12940644editdlrm
sparse_itemwise_dropout_with_replacement_op_test.py29130644editdlrm
sparse_lengths_sum_benchmark.py41590644editdlrm
sparse_lp_regularizer_test.py25530644editdlrm
sparse_normalize_test.py31360644editdlrm
sparse_ops_test.py34690644editdlrm
sparse_to_dense_mask_op_test.py36930644editdlrm
spatial_bn_op_test.py201820644editdlrm
specialized_segment_ops_test.py117750644editdlrm
split_op_cost_test.py86450644editdlrm
square_root_divide_op_test.py21790644editdlrm
stats_ops_test.py17890644editdlrm
stats_put_ops_test.py65960644editdlrm
storm_test.py65070644editdlrm
string_ops_test.py41540644editdlrm
text_file_reader_test.py25170644editdlrm
thresholded_relu_op_test.py23230644editdlrm
tile_op_test.py38870644editdlrm
top_k_test.py91130644editdlrm
torch_integration_test.py399410644editdlrm
transpose_op_test.py27220644editdlrm
trigonometric_op_test.py17150644editdlrm
unique_ops_test.py22550644editdlrm
unique_uniform_fill_op_test.py13350644editdlrm
unsafe_coalesce_test.py29400644editdlrm
upsample_op_test.py73080644editdlrm
utility_ops_test.py150540644editdlrm
video_input_op_test.py105030644editdlrm
weighted_multi_sample_test.py19970644editdlrm
weighted_sample_test.py27390644editdlrm
weighted_sum_test.py30520644editdlrm
weight_scale_test.py20570644editdlrm
wngrad_test.py82790644editdlrm
__init__.py00644editdlrm
Edit: /usr/local/lib64/python3.6/site-packages/caffe2/python/operator_test/recurrent_network_test.py (14048B)
from caffe2.python import recurrent, workspace from caffe2.python.model_helper import ModelHelper from hypothesis import given, settings import caffe2.python.hypothesis_test_util as hu import caffe2.python.serialized_test.serialized_test_util as serial import hypothesis.strategies as st import numpy as np class RecurrentNetworkTest(serial.SerializedTestCase): @given(T=st.integers(1, 4), n=st.integers(1, 5), d=st.integers(1, 5)) @settings(deadline=10000) def test_sum_mul(self, T, n, d): model = ModelHelper(name='external') input_blob, initial_input_blob = model.net.AddExternalInputs( 'input', 'initial_input') step = ModelHelper(name='step', param_model=model) input_t, output_t_prev = step.net.AddExternalInput( 'input_t', 'output_t_prev') output_t_internal = step.net.Sum([input_t, output_t_prev]) output_t = step.net.Mul([input_t, output_t_internal]) step.net.AddExternalOutput(output_t) self.simple_rnn(T, n, d, model, step, input_t, output_t, output_t_prev, input_blob, initial_input_blob) @given(T=st.integers(1, 4), n=st.integers(1, 5), d=st.integers(1, 5)) @settings(deadline=10000) def test_mul(self, T, n, d): model = ModelHelper(name='external') input_blob, initial_input_blob = model.net.AddExternalInputs( 'input', 'initial_input') step = ModelHelper(name='step', param_model=model) input_t, output_t_prev = step.net.AddExternalInput( 'input_t', 'output_t_prev') output_t = step.net.Mul([input_t, output_t_prev]) step.net.AddExternalOutput(output_t) self.simple_rnn(T, n, d, model, step, input_t, output_t, output_t_prev, input_blob, initial_input_blob) @given(T=st.integers(1, 4), n=st.integers(1, 5), d=st.integers(1, 5)) def test_extract(self, T, n, d): model = ModelHelper(name='external') workspace.ResetWorkspace() input_blob, initial_input_blob = model.net.AddExternalInputs( 'input', 'initial_input') step = ModelHelper(name='step', param_model=model) input_t, output_t_prev = step.net.AddExternalInput( 'input_t', 'output_t_prev') output_t = step.net.Mul([input_t, output_t_prev]) step.net.AddExternalOutput(output_t) inputs = np.random.randn(T, n, d).astype(np.float32) initial_input = np.random.randn(1, n, d).astype(np.float32) recurrent.recurrent_net( net=model.net, cell_net=step.net, inputs=[(input_t, input_blob)], initial_cell_inputs=[(output_t_prev, initial_input_blob)], links={output_t_prev: output_t}, scope="test_rnn_sum_mull", ) workspace.blobs[input_blob] = inputs workspace.blobs[initial_input_blob] = initial_input workspace.RunNetOnce(model.param_init_net) workspace.CreateNet(model.net) prefix = "extractTest" workspace.RunNet(model.net.Proto().name, T) retrieved_blobs = recurrent.retrieve_step_blobs( model.net, prefix ) # needed for python3.6, which returns bytearrays instead of str retrieved_blobs = [x.decode() for x in retrieved_blobs] for i in range(T): blob_name = prefix + "_" + "input_t" + str(i) self.assertTrue( blob_name in retrieved_blobs, "blob extraction failed on timestep {}\ . \n\n Extracted Blobs: {} \n\n Looking for {}\ .".format(i, retrieved_blobs, blob_name) ) def simple_rnn(self, T, n, d, model, step, input_t, output_t, output_t_prev, input_blob, initial_input_blob): input = np.random.randn(T, n, d).astype(np.float32) initial_input = np.random.randn(1, n, d).astype(np.float32) print(locals()) recurrent.recurrent_net( net=model.net, cell_net=step.net, inputs=[(input_t, input_blob)], initial_cell_inputs=[(output_t_prev, initial_input_blob)], links={output_t_prev: output_t}, scope="test_rnn_sum_mull", ) workspace.blobs[input_blob] = input workspace.blobs[initial_input_blob] = initial_input op = model.net._net.op[-1] # Just conviniently store all inputs in an array in the same # order as op.input inputs = [workspace.blobs[name] for name in op.input] def reference(input, initial_input): global_ws_name = workspace.CurrentWorkspace() input_all = workspace.blobs[input_blob] workspace.SwitchWorkspace("ref", create_if_missing=True) workspace.blobs[input_blob] = input workspace.blobs[output_t_prev] = initial_input.reshape(n, d) res_all = np.zeros(shape=input.shape, dtype=np.float32) for t_cur in range(T): workspace.blobs[input_t] = input_all[t_cur] workspace.RunNetOnce(step.net) result_t = workspace.blobs[output_t] workspace.blobs[output_t_prev] = result_t res_all[t_cur] = result_t workspace.SwitchWorkspace(global_ws_name) shape = list(input.shape) shape[0] = 1 return (res_all, res_all[-1].reshape(shape)) self.assertReferenceChecks( device_option=hu.cpu_do, op=op, inputs=inputs, reference=reference, output_to_grad=op.output[0], outputs_to_check=[0, 1], ) self.assertGradientChecks( device_option=hu.cpu_do, op=op, inputs=inputs, outputs_to_check=0, outputs_with_grads=[0], threshold=0.01, stepsize=0.005, ) # Hacky version of 1-D convolution def _convolution_1d( self, model, inputs, conv_window, conv_filter, conv_bias, output_name, left_pad, ): if left_pad: padding_width = conv_window - 1 else: padding_width = 0 # [batch_size, inputs_length, state_size] inputs_transposed = model.net.Transpose( inputs, 'inputs_transposed', axes=[1, 0, 2], ) # [batch_size, 1, inputs_length, state_size] inputs_transposed_4d = model.net.ExpandDims( inputs_transposed, 'inputs_transposed_4d', dims=[1], ) # [batch_size, 1, inputs_length - conv_window + 1, state_size] output_transposed_4d = model.net.Conv( [inputs_transposed_4d, conv_filter, conv_bias], output_name + '_transposed_4d', kernel_h=1, kernel_w=conv_window, order='NHWC', pad_t=0, pad_l=padding_width, pad_b=0, pad_r=0, ) # [batch_size, inputs_length - conv_window + 1, state_size] output_transposed = model.net.Squeeze( output_transposed_4d, output_name + '_transposed', dims=[1], ) # [inputs_length - conv_window + 1, batch_size, state_size] output = model.net.Transpose( output_transposed, output_name, axes=[1, 0, 2], ) return output @given(sequence_length=st.integers(3, 7), conv_window=st.integers(1, 3), batch_size=st.integers(1, 5), state_size=st.integers(1, 5)) def test_stateful_convolution_forward_only( self, sequence_length, conv_window, batch_size, state_size, ): ''' This unit test demonstrates another ways of using RecurrentNetwork. Imagine, that you want to compute convolution over a sequence, but sequence elements are not given to you from the beginning, so you have to loop over the sequence and compute convolution for each element separately. This situation can occur, during inference/generation step of the neural networks. First of all, you have to provide actual input via recurrent states, since the input of RecurrentNetwork should be known in advance. Here, we use `fake_inputs` as the input, and it's used by the op to extract batch size and sequence length. The actual input sequence is stored in the recurrent state `input_state`. At every step we generate a new element via input_state_t (in this example, input_state_t is generated at random, but in a real situation it can be created using convolution output from the previous step). A few important differences from regular RecurrentNetwork usecase: 1. input_state_t_prev is not only a single previous element of input_state sequence. It is last conv_window elements including (!) the current one - input_state_t. We specify that using `link_window` argument of RecurrentNetwork. We need that many elements to compute a single convolution step. Also, note that `link_window` specifies how many elements to link starting at `timestep` + `link_offset` position. 2. First few steps might require additional zero padding from the left, since there is no enough element of input_state sequence are available. So the initial_state for input_state contains several elements (exactly how many pads we need for the first step). Also, because of that all offseting over input_state sequence is being shifted by length of initial_input_state: see `link_offset` and `alias_offset` arguments of RecurrentNetwork. In this test, we assert that we get the same result if we apply convolution over all elements simultaneously, since the whole input_state sequence was generated at the end. ''' model = ModelHelper(name='model') fake_inputs = model.param_init_net.UniformFill( [], 'fake_inputs', min=-1.0, max=1.0, shape=[sequence_length, batch_size, state_size], ) initial_input_state = model.param_init_net.ConstantFill( [], 'initial_input_state', value=0.0, shape=[conv_window - 1, batch_size, state_size], ) initial_output_state = model.param_init_net.ConstantFill( [], 'initial_output_state', value=0.0, shape=[1, batch_size, state_size], ) step_model = ModelHelper(name='step_model', param_model=model) ( fake_input_t, timestep, input_state_t_prev, ) = step_model.net.AddExternalInputs( 'fake_input_t', 'timestep', 'input_state_t_prev', ) conv_filter = step_model.param_init_net.XavierFill( [], 'conv_filter', shape=[state_size, 1, conv_window, state_size], ) conv_bias = step_model.param_init_net.ConstantFill( [], 'conv_bias', shape=[state_size], value=0.0, ) step_model.params.extend([conv_filter, conv_bias]) input_state_t = step_model.net.UniformFill( [], 'input_state_t', min=-1.0, max=1.0, shape=[1, batch_size, state_size], ) output_state_t = self._convolution_1d( model=step_model, inputs=input_state_t_prev, conv_window=conv_window, conv_filter=conv_filter, conv_bias=conv_bias, output_name='output_state_t', left_pad=False, ) initial_recurrent_states = [initial_input_state, initial_output_state] all_inputs = ( [fake_inputs] + step_model.params + initial_recurrent_states ) all_outputs = ['input_state_all', 'output_state_all'] recurrent_states = ['input_state', 'output_state'] input_state_all, output_state_all, _ = model.net.RecurrentNetwork( all_inputs, all_outputs + ['step_workspaces'], param=[all_inputs.index(p) for p in step_model.params], alias_src=recurrent_states, alias_dst=all_outputs, alias_offset=[conv_window - 1, 1], recurrent_states=recurrent_states, initial_recurrent_state_ids=[ all_inputs.index(s) for s in initial_recurrent_states ], link_internal=[ str(input_state_t_prev), str(input_state_t), str(output_state_t), ], link_external=['input_state', 'input_state', 'output_state'], link_offset=[0, conv_window - 1, 1], link_window=[conv_window, 1, 1], backward_link_internal=[], backward_link_external=[], backward_link_offset=[], step_net=step_model.net.Proto(), timestep='timestep' if timestep is None else str(timestep), outputs_with_grads=[], ) output_states_2 = self._convolution_1d( model=model, inputs=input_state_all, conv_window=conv_window, conv_filter=conv_filter, conv_bias=conv_bias, output_name='output_states_2', left_pad=True, ) workspace.RunNetOnce(model.param_init_net) workspace.RunNetOnce(model.net) np.testing.assert_almost_equal( workspace.FetchBlob(output_state_all), workspace.FetchBlob(output_states_2), decimal=3, )