class_docstr: 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
class_docstr_tok: ["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"]
code: def type_inference(self):
      self._check_peephole_weights()
      # all return shapes are [batch, hidden_dim]
      ret_shape = self.c_prev.shape
      dtype = self.x.dtype
      # See
      # https://www.tensorflow.org/api_docs/python/tf/raw_ops/LSTMBlockCell
      # All returned shapes are [batch, hidden_dim]
      return (
          types.tensor(dtype, ret_shape),  # i
          types.tensor(dtype, ret_shape),  # cs
          types.tensor(dtype, ret_shape),  # f
          types.tensor(dtype, ret_shape),  # o
          types.tensor(dtype, ret_shape),  # ci
          types.tensor(dtype, ret_shape),  # co
          types.tensor(dtype, ret_shape),
      )
  
file_path: coremltools/coremltools/converters/mil/frontend/tensorflow/dialect_ops.py
imports: from coremltools.converters.mil.mil import Operation, types
  from coremltools.converters.mil.mil.input_type import DefaultInputs, InputSpec, TensorInputType
  from coremltools.converters.mil.mil.ops.registry import SSAOpRegistry
label_desc: Use image node_id 2 for calling the tf_lstm_block_cell obj's underlying member method code with example usage: obj.type_inference() and returns: types,  types,  types,  types,  types,  types,  types