parameters: (op)
return_statement: return [linear_shape]
docstring: Shape function for the SparseApplyFtrl op.
docstring_summary: Shape function for the SparseApplyFtrl op.
docstring_tokens: Shape function for the SparseApplyFtrl op .
function: def _SparseApplyFtrlShape(op):
    """Shape function for the SparseApplyFtrl op."""
    var_shape = op.inputs[0].get_shape()
    accum_shape = op.inputs[1].get_shape().merge_with(var_shape)
    linear_shape = op.inputs[2].get_shape().merge_with(accum_shape)
    grad_shape = op.inputs[3].get_shape().merge_with(
        tensor_shape.TensorShape([None]).concatenate(linear_shape[1:]))
    unused_indices_shape = op.inputs[4].get_shape().merge_with(
        tensor_shape.vector(grad_shape[0]))
    _AssertInputIsScalar(op, 5)  # lr
    _AssertInputIsScalar(op, 6)  # l1
    _AssertInputIsScalar(op, 7)  # l2
    _AssertInputIsScalar(op, 8)  # lr_power
    return [linear_shape]
function_tokens: def _SparseApplyFtrlShape ( op ) : var_shape = op . inputs [ 0 ] . get_shape ( ) accum_shape = op . inputs [ 1 ] . get_shape ( ) . merge_with ( var_shape ) linear_shape = op . inputs [ 2 ] . get_shape ( ) . merge_with ( accum_shape ) grad_shape = op . inputs [ 3 ] . get_shape ( ) . merge_with ( tensor_shape . TensorShape ( [ None ] ) . concatenate ( linear_shape [ 1 : ] ) ) unused_indices_shape = op . inputs [ 4 ] . get_shape ( ) . merge_with ( tensor_shape . vector ( grad_shape [ 0 ] ) ) _AssertInputIsScalar ( op , 5 ) # lr _AssertInputIsScalar ( op , 6 ) # l1 _AssertInputIsScalar ( op , 7 ) # l2 _AssertInputIsScalar ( op , 8 ) # lr_power return [ linear_shape ]