Caffe2 - Python API
A deep learning, cross platform ML framework
dropout.py
1 # Module caffe2.python.layers.dropout
2 from __future__ import absolute_import
3 from __future__ import division
4 from __future__ import print_function
5 from __future__ import unicode_literals
6 
7 from caffe2.python import schema
8 from caffe2.python.layers.layers import ModelLayer
9 
10 
12 
13  def __init__(
14  self,
15  model,
16  input_record,
17  name='dropout',
18  ratio=0.5,
19  **kwargs):
20 
21  super(Dropout, self).__init__(model, name, input_record, **kwargs)
22  assert isinstance(input_record, schema.Scalar), "Incorrect input type"
23  assert (ratio >= 0 and ratio < 1.0), \
24  "Expected 0 <= ratio < 1, but got ratio of %s" % ratio
25 
26  self.output_schema = input_record.clone_schema()
27  self.output_schema.set_value(self.get_next_blob_reference('output'))
28 
29  self.ratio = ratio
30 
31  def _add_ops(self, net, is_test):
32  input_blob = self.input_record.field_blobs()
33  output_blobs = self.output_schema.field_blobs() \
34  + [net.NextScopedBlob('d_mask')]
35 
36  net.Dropout(input_blob,
37  output_blobs,
38  ratio=self.ratio,
39  is_test=is_test)
40 
41  def add_train_ops(self, net):
42  self._add_ops(net, is_test=False)
43 
44  def add_eval_ops(self, net):
45  self._add_ops(net, is_test=True)
46 
47  def add_ops(self, net):
48  self.add_eval_ops(net)
def get_next_blob_reference(self, name)
Definition: layers.py:346
def _add_ops(self, net, is_test)
Definition: dropout.py:31