code: def make_basket_put_payoff(
      strikes: types.RealTensor,
      dtype: tf.DType = None,
      name: str = None,
  ) -> Callable[[types.RealTensor], types.RealTensor]:
      """Produces a callable from samples to payoff of a simple basket put option.
  
      Args:
        strikes: A `Tensor` of `dtype` consistent with `samples` and shape
          `[num_samples, batch_size]`.
        dtype: Optional `dtype`. Either `tf.float32` or `tf.float64`. If supplied,
          represents the `dtype` for the 'strikes' as well as for the input
          argument of the output payoff callable.
          Default value: `None`, which means that the `dtype` inferred from
          `strikes` is used.
        name: Python `str` name prefixed to Ops created by the callable created
          by this function.
          Default value: `None` which is mapped to the default name 'put_valuer'
  
      Returns:
        A callable from `Tensor` of shape
        `[batch_size, num_samples, num_exercise_times, dim]`
        and a scalar `Tensor` representing current time to a `Tensor` of shape
        `[num_samples, batch_size]`.
      """
      name = name or "put_valuer"
      with tf.name_scope(name):
          strikes = tf.convert_to_tensor(
              strikes, dtype=dtype, name="strikes"
          )
          dtype = dtype or strikes.dtype
          put_valuer = functools.partial(
              _put_valuer, strikes=strikes, dtype=dtype
          )
  
      return put_valuer
  
imports: import functools
  from typing import Callable
  import tensorflow.compat.v2
  from tf_quant_finance import types
label_desc: Use image node_id 1 for calling a global function with example usage: make_basket_put_payoff(strikes, dtype, name) and returns: put_valuer