3 from __future__
import absolute_import
4 from __future__
import division
5 from __future__
import print_function
6 from __future__
import unicode_literals
8 from caffe2.python
import schema
9 from caffe2.python.layers.layers
import (
14 def simple_init(self, model, input_record, *args, **kwargs):
15 ModelLayer.__init__(self, model, self.operator, input_record, **kwargs)
16 assert self.operator
is not None,
"Try to create invalid operator layer" 21 def first_field_schema_init(self, model, input_record, *args, **kwargs):
22 ModelLayer.__init__(self, model, self.operator, input_record, **kwargs)
23 assert self.operator
is not None,
"Try to create invalid operator layer" 25 "Operator {0} expects schema.Struct as input, received {1} instead".\
26 format(self.operator, input_record)
31 def simple_add_ops(self, net):
35 self.input_record.field_blobs(),
36 self.output_schema.field_blobs(),
41 _simple_operators = [
'Softmax',
'Relu',
'Sigmoid',
'Tanh']
42 _first_field_schema_operators = [
'Sum']
48 for operator
in _simple_operators:
56 {
'__init__': simple_init,
57 'add_ops': simple_add_ops,
63 for operator
in _first_field_schema_operators:
72 {
'__init__': first_field_schema_init,
73 'add_ops': simple_add_ops,
def NewRecord(net, schema)