/usr/local/lib64/python3.6/site-packages/caffe2/python/layers/__pycache__
Edit: /usr/local/lib64/python3.6/site-packages/caffe2/python/layers/__pycache__/concat.cpython-36.pyc (4063B)
3
Eg @ sf d dl mZ d dlmZ d dlmZ d dlZd dlm Z d dl
Z
e
jeZ
dd ZG dd d eZdS )
)schema)
ModelLayer) viewitemsN)defaultdictc s t t}d x| D ]}|jjd }t|drt|jdrt|jjdrt|jjjt rx6|jjjj
D ]$\}}|| j fdd|D qfW |7 qW |j rt |S d S )Nr metadata
feature_specsfeature_to_indexc s g | ]} | qS r ).0vi) start_posr G/usr/local/lib64/python3.6/site-packages/caffe2/python/layers/concat.py
s z5get_concatenated_feature_to_index..)
r listZdtypeshapehasattrr r
isinstancer dictitemsextendkeys)Zblobs_to_concatZconcat_feature_to_indexZscalarZnum_dimskvr )r r
!get_concatenated_feature_to_index s
r c s* e Zd ZdZd fdd Zdd Z ZS )
Concata
Construct Concat layer
Assume that first dimension is batch,
Example:
embedding_dim = 64
input_record = self.new_record(schema.Struct(
('input1', schema.Scalar((np.float32, (embedding_dim, )))),
('input2', schema.Scalar((np.float32, (embedding_dim, )))),
('input3', schema.Scalar((np.float32, (embedding_dim, )))),
))
output = self.model.Concat(input_record)
self.assertEqual(
schema.Scalar((np.float32, ((len(input_record.fields) * embedding_dim, )))),
output
)
# Note that in Concat layer we assume first dimension is batch.
# so input is B * embedding_dim
# add_axis=1 make it B * 1 * embedding_dim
# Concat on axis=1 make it B * N * embedding_dim
output = self.model.Concat(input_record, axis=1, add_axis=1)
self.assertEqual(
schema.Scalar((np.float32, ((len(input_record.fields), embedding_dim)))),
output
)
r concatc s t t| j|||f| || _|| _|dko2|dk s>tdt|tjsXtdj |g }xrt
|jD ]d\}} t| tjstdj || t
| j j}
|r|
j|d d t|
|kstd|j|
qhW tjdt| |dkr
tj|d | jdg| _d S d}xL|D ]D}
||
|d 7 }d|
|d <