/usr/local/lib64/python3.6/site-packages/caffe2/python/layers
NameSizeModeActions
__pycache__/-0755rm
adaptive_weight.py56870644editdlrm
add_bias.py13960644editdlrm
arc_cosine_feature_map.py73450644editdlrm
batch_huber_loss.py35230644editdlrm
batch_lr_loss.py115770644editdlrm
batch_mse_loss.py23330644editdlrm
batch_normalization.py38230644editdlrm
batch_sigmoid_cross_entropy_loss.py14830644editdlrm
batch_softmax_loss.py45800644editdlrm
blob_weighted_sum.py22190644editdlrm
bpr_loss.py14990644editdlrm
bucket_weighted.py23550644editdlrm
build_index.py19370644editdlrm
concat.py48490644editdlrm
constant_weight.py12080644editdlrm
conv.py50500644editdlrm
dropout.py14100644editdlrm
fc.py92960644editdlrm
fc_without_bias.py19540644editdlrm
fc_with_bootstrap.py127880644editdlrm
feature_sparse_to_dense.py143610644editdlrm
functional.py48750644editdlrm
gather_record.py32600644editdlrm
homotopy_weight.py43060644editdlrm
label_smooth.py35070644editdlrm
last_n_window_collector.py23920644editdlrm
layers.py174120644editdlrm
layer_normalization.py42910644editdlrm
margin_rank_loss.py19510644editdlrm
merge_id_lists.py15000644editdlrm
pairwise_similarity.py35490644editdlrm
position_weighted.py20660644editdlrm
random_fourier_features.py31870644editdlrm
reservoir_sampling.py30130644editdlrm
sampling_train.py22100644editdlrm
sampling_trainable_mixin.py13660644editdlrm
select_record_by_context.py23810644editdlrm
semi_random_features.py58090644editdlrm
sparse_dropout_with_replacement.py39430644editdlrm
sparse_feature_hash.py46180644editdlrm
sparse_itemwise_dropout_with_replacement.py39440644editdlrm
sparse_lookup.py221700644editdlrm
split.py22570644editdlrm
tags.py41140644editdlrm
uniform_sampling.py27790644editdlrm
__init__.py9430644editdlrm
Edit: /usr/local/lib64/python3.6/site-packages/caffe2/python/layers/pairwise_similarity.py (3549B)
## @package dot_product # Module caffe2.python.layers.dot_product from caffe2.python import schema from caffe2.python.layers.layers import ( ModelLayer, ) class PairwiseSimilarity(ModelLayer): def __init__(self, model, input_record, output_dim, pairwise_similarity_func='dot', name='pairwise_similarity', **kwargs): super(PairwiseSimilarity, self).__init__(model, name, input_record, **kwargs) assert isinstance(input_record, schema.Struct), ( "Incorrect input type. Expected Struct, but received: {0}". format(input_record)) assert ( ('all_embeddings' in input_record) ^ ('x_embeddings' in input_record and 'y_embeddings' in input_record) ), ( "either (all_embeddings) xor (x_embeddings and y_embeddings) " + "should be given." ) self.pairwise_similarity_func = pairwise_similarity_func if 'all_embeddings' in input_record: x_embeddings = input_record['all_embeddings'] y_embeddings = input_record['all_embeddings'] else: x_embeddings = input_record['x_embeddings'] y_embeddings = input_record['y_embeddings'] assert isinstance(x_embeddings, schema.Scalar), ( "Incorrect input type for x. Expected Scalar, " + "but received: {0}".format(x_embeddings)) assert isinstance(y_embeddings, schema.Scalar), ( "Incorrect input type for y. Expected Scalar, " + "but received: {0}".format(y_embeddings) ) if 'indices_to_gather' in input_record: indices_to_gather = input_record['indices_to_gather'] assert isinstance(indices_to_gather, schema.Scalar), ( "Incorrect type of indices_to_gather. " "Expected Scalar, but received: {0}".format(indices_to_gather) ) self.indices_to_gather = indices_to_gather else: self.indices_to_gather = None self.x_embeddings = x_embeddings self.y_embeddings = y_embeddings dtype = x_embeddings.field_types()[0].base self.output_schema = schema.Scalar( (dtype, (output_dim,)), self.get_next_blob_reference('output') ) def add_ops(self, net): if self.pairwise_similarity_func == "cosine_similarity": x_embeddings_norm = net.Normalize(self.x_embeddings(), axis=1) y_embeddings_norm = net.Normalize(self.y_embeddings(), axis=1) Y = net.BatchMatMul( [x_embeddings_norm, y_embeddings_norm], [self.get_next_blob_reference(x_embeddings_norm + '_matmul')], trans_b=1, ) elif self.pairwise_similarity_func == "dot": Y = net.BatchMatMul( [self.x_embeddings(), self.y_embeddings()], [self.get_next_blob_reference(self.x_embeddings() + '_matmul')], trans_b=1, ) else: raise NotImplementedError( "pairwise_similarity_func={} is not valid".format( self.pairwise_similarity_func ) ) if self.indices_to_gather: flattened = net.Flatten( Y, Y + '_flatten', ) net.BatchGather( [flattened, self.indices_to_gather()], self.output_schema(), ) else: net.Flatten(Y, self.output_schema())