code: def _block_lstm(
      seq_len_max,
      x,
      w,
      b,
      cs_prev=None,
      h_prev=None,
      wci=None,
      wcf=None,
      wco=None,
      forget_bias=None,
      cell_clip=None,
      use_peephole=None,
      name=None,
  ):
      r"""TODO(williamchan): add doc.
  
      Args:
        seq_len_max: A `Tensor` of type `int64`.
        x: A list of at least 1 `Tensor` objects of the same type.
        w: A `Tensor`. Must have the same type as `x`.
        b: A `Tensor`. Must have the same type as `x`.
        cs_prev: A `Tensor`. Must have the same type as `x`.
        h_prev: A `Tensor`. Must have the same type as `x`.
        wci: A `Tensor`. Must have the same type as `x`.
        wcf: A `Tensor`. Must have the same type as `x`.
        wco: A `Tensor`. Must have the same type as `x`.
        forget_bias: An optional `float`. Defaults to `1`.
        cell_clip: An optional `float`. Defaults to `-1` (no clipping).
        use_peephole: An optional `bool`. Defaults to `False`.
        name: A name for the operation (optional).
  
      Returns:
        A tuple of `Tensor` objects (i, cs, f, o, ci, co, h).
        i: A list with the same number of `Tensor` objects as `x` of `Tensor`
        objects of the same type as x.
        cs: A list with the same number of `Tensor` objects as `x` of `Tensor`
        objects of the same type as x.
        f: A list with the same number of `Tensor` objects as `x` of `Tensor`
        objects of the same type as x.
        o: A list with the same number of `Tensor` objects as `x` of `Tensor`
        objects of the same type as x.
        ci: A list with the same number of `Tensor` objects as `x` of `Tensor`
        objects of the same type as x.
        co: A list with the same number of `Tensor` objects as `x` of `Tensor`
        objects of the same type as x.
        h: A list with the same number of `Tensor` objects as `x` of `Tensor`
        objects of the same type as x.
  
      Raises:
        ValueError: If `b` does not have a valid shape.
      """
      dtype = x[0].dtype
      batch_size = x[0].get_shape().with_rank(2).dims[0].value
      cell_size4 = b.get_shape().with_rank(1).dims[0].value
      if cell_size4 is None:
          raise ValueError("`b` shape must not be None.")
      cell_size = cell_size4 / 4
      zero_state = None
      if cs_prev is None or h_prev is None:
          zero_state = array_ops.constant(
              0, dtype=dtype, shape=[batch_size, cell_size]
          )
      if cs_prev is None:
          cs_prev = zero_state
      if h_prev is None:
          h_prev = zero_state
      if wci is None:
          wci = array_ops.constant(0, dtype=dtype, shape=[cell_size])
          wcf = wci
          wco = wci
  
      # pylint: disable=protected-access
      i, cs, f, o, ci, co, h = gen_rnn_ops.block_lstm(
          seq_len_max=seq_len_max,
          x=array_ops.stack(x),
          cs_prev=cs_prev,
          h_prev=h_prev,
          w=w,
          wci=wci,
          wcf=wcf,
          wco=wco,
          b=b,
          forget_bias=forget_bias,
          cell_clip=cell_clip if cell_clip is not None else -1,
          name=name,
          use_peephole=use_peephole,
      )
  
      return (
          array_ops.unstack(i),
          array_ops.unstack(cs),
          array_ops.unstack(f),
          array_ops.unstack(o),
          array_ops.unstack(ci),
          array_ops.unstack(co),
          array_ops.unstack(h),
      )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import abc
  import six
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import ops
  from tensorflow.python.keras.engine import input_spec
  from tensorflow.python.layers import base
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import gen_rnn_ops
  from tensorflow.python.ops import init_ops
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import nn_ops
  from tensorflow.python.ops import rnn_cell_impl
label_desc: Use image node_id 2 for calling a global function with example usage: _block_lstm(seq_len_max, x, w, b, cs_prev, h_prev, wci, wcf, wco, forget_bias, cell_clip, use_peephole, name) and returns: array_ops,  array_ops,  array_ops,  array_ops,  array_ops,  array_ops,  array_ops