OpLSTMRec

class OpLSTMRec.LSTMRecOpGrad(fun_name, inplace, recurrent_transform)[source]
make_node(Y, H, c, y0, i, Dd, DY, *args)[source]

Create a “apply” nodes for the inputs in that order.

c_support_code()[source]

Optional: Return utility code for use by a Variable or Op to be included at global scope prior to the rest of the code for this class.

QUESTION: How many times will this support code be emitted for a graph with many instances of the same type?

Raises:
MethodNotDefined

Subclass does not implement this method.

c_code(node, name, input_names, output_names, sub)[source]

Required: return the C implementation of an Op.

Returns C code that does the computation associated to this Op, given names for the inputs and outputs.

Parameters:
node : Apply instance

The node for which we are compiling the current c_code.

The same Op may be used in more than one node.

name : str

A name that is automatically assigned and guaranteed to be unique.

inputs : list of strings

There is a string for each input of the function, and the string is the name of a C variable pointing to that input. The type of the variable depends on the declared type of the input. There is a corresponding python variable that can be accessed by prepending “py_” to the name in the list.

outputs : list of strings

Each string is the name of a C variable where the Op should store its output. The type depends on the declared type of the output. There is a corresponding python variable that can be accessed by prepending “py_” to the name in the list. In some cases the outputs will be preallocated and the value of the variable may be pre-filled. The value for an unallocated output is type-dependent.

sub : dict of strings

Extra symbols defined in CLinker sub symbols (such as ‘fail’). WRITEME

Raises:
MethodNotDefined

The subclass does not override this method.

class OpLSTMRec.LSTMRecOp(fun_name, inplace, recurrent_transform)[source]
make_node(Z, c, y0, i, *args)[source]
Parameters:
  • Z – {input,output,forget} gate + cell state. 3d (time,batch,dim*4)
  • c – initial cell state. 2d (batch,dim)
  • y0 – output of t = -1 (for recursion at t = 0). 2d (batch,dim)
  • i – index. 2d (time,batch) -> 0 or 1
  • args – custom_inputs + initial_state_vars: other inputs for the custom function
c_support_code()[source]

Optional: Return utility code for use by a Variable or Op to be included at global scope prior to the rest of the code for this class.

QUESTION: How many times will this support code be emitted for a graph with many instances of the same type?

Raises:
MethodNotDefined

Subclass does not implement this method.

c_code(node, name, input_names, output_names, sub)[source]

Required: return the C implementation of an Op.

Returns C code that does the computation associated to this Op, given names for the inputs and outputs.

Parameters:
node : Apply instance

The node for which we are compiling the current c_code.

The same Op may be used in more than one node.

name : str

A name that is automatically assigned and guaranteed to be unique.

inputs : list of strings

There is a string for each input of the function, and the string is the name of a C variable pointing to that input. The type of the variable depends on the declared type of the input. There is a corresponding python variable that can be accessed by prepending “py_” to the name in the list.

outputs : list of strings

Each string is the name of a C variable where the Op should store its output. The type depends on the declared type of the output. There is a corresponding python variable that can be accessed by prepending “py_” to the name in the list. In some cases the outputs will be preallocated and the value of the variable may be pre-filled. The value for an unallocated output is type-dependent.

sub : dict of strings

Extra symbols defined in CLinker sub symbols (such as ‘fail’). WRITEME

Raises:
MethodNotDefined

The subclass does not override this method.

grad(inputs, output_grads)[source]
OpLSTMRec.function_ops = {}[source]
Type:dict[(str,int),LSTMRecOp]
OpLSTMRec.grad_ops = {}[source]
Type:dict[(str,int),LSTMRecOpGrad]
OpLSTMRec.register_func(recurrent_transform)[source]