class_docstr: Expand tf_lstm_block_cell to fine-grained SSA ops following:
  
  xh = [x, h_prev]
  [i, ci, f, o] = xh * w + b
  f = f + forget_bias
  if not use_peephole:
    wci = wcf = wco = 0
  i = sigmoid(cs_prev .* wci + i)
  f = sigmoid(cs_prev .* wcf + f)
  ci = tanh(ci)
  cs = ci .* i + cs_prev .* f
  cs = clip(cs, cell_clip)
  o = sigmoid(cs * wco + o)
  co = tanh(cs)
  h = co .* o
  
  Inputs:
  
      prog: Program
code: def apply(self, prog):
      for f in prog.functions.values():
          _expand_tf_lstm_helper(f)
  
file_path: coremltools/coremltools/converters/mil/frontend/tensorflow/ssa_passes/expand_tf_lstm.py
imports: import numpy
  from coremltools import _logger
  from coremltools.converters.mil.mil import Builder
  from coremltools.converters.mil.mil.passes.graph_pass import AbstractGraphPass
  from coremltools.converters.mil.mil.passes.pass_registry import register_pass
label_desc: Use image node_id 1 for calling the expand_tf_lstm obj's underlying member method code with example usage: obj.apply(prog) without return types