class_docstr: Parallel expected improvement acquisition function.
  
  Computes the q-EI from a multivariate observation model. This is also known as
  batch expected improvement.
  
  Requires that `predictive_distribution` has a `sample` method.
  
  #### Examples
  
  Build and evaluate a Parallel Expected Improvement acquisition function.
  
  ```python
  import numpy as np
  import tensorflow_probability as tfp
  
  tfd = tfp.distributions
  tfpk = tfp.math.psd_kernels
  tfp_acq = tfp.experimental.bayesopt.acquisition
  
  # Sample 10 20-dimensional index points and associated observations.
  index_points = np.random.uniform(size=[10, 20])
  observations = np.random.uniform(size=[10])
  
  # Build a Student T Process regression model conditioned on observed data.
  dist = tfd.StudentTProcessRegressionModel(
      kernel=tfpk.ExponentiatedQuadratic(),
      df=5.,
      observation_index_points=index_points,
      observations=observations)
  
  # Define a Parallel Expected Improvement acquisition function.
  stp_pei = tfp_acq.ParallelExpectedImprovement(
      predictive_distribution=dist,
      observations=observations,
      num_samples=10_000)
  
  # Evaluate the acquisition function at a new set of index points.
  pred_index_points = np.random.uniform(size=[6, 20])
  acq_fn_vals = stp_pei(pred_index_points)  # Has shape [6].
  ```
class_docstr_tok: ["Parallel","expected","improvement","acquisition","function",".","Computes","the","q-EI","from","a","multivariate","observation","model",".","This","is","also","known","as","batch","expected","improvement",".","Requires","that","`","predictive_distribution","`","has","a","`","sample","`","method",".","#","#","#","#","Examples","Build","and","evaluate","a","Parallel","Expected","Improvement","acquisition","function",".","``","`","python","import","numpy","as","np","import","tensorflow_probability","as","tfp","tfd","=","tfp.distributions","tfpk","=","tfp.math.psd_kernels","tfp_acq","=","tfp.experimental.bayesopt.acquisition","#","Sample","10","20-dimensional","index","points","and","associated","observations",".","index_points","=","np.random.uniform","(","size=","[","10",",","20","]",")","observations","=","np.random.uniform","(","size=","[","10","]",")","#","Build","a","Student","T","Process","regression","model","conditioned","on","observed","data",".","dist","=","tfd.StudentTProcessRegressionModel","(","kernel=tfpk.ExponentiatedQuadratic","(",")",",","df=5.",",","observation_index_points=index_points",",","observations=observations",")","#","Define","a","Parallel","Expected","Improvement","acquisition","function",".","stp_pei","=","tfp_acq.ParallelExpectedImprovement","(","predictive_distribution=dist",",","observations=observations",",","num_samples=10_000",")","#","Evaluate","the","acquisition","function","at","a","new","set","of","index","points",".","pred_index_points","=","np.random.uniform","(","size=","[","6",",","20","]",")","acq_fn_vals","=","stp_pei","(","pred_index_points",")","#","Has","shape","[","6","]",".","``","`"]
code: def is_parallel(self):
      return True
  
imports: import tensorflow.compat.v2
  from tensorflow_probability.python.distributions import normal
  from tensorflow_probability.python.distributions import student_t
  from tensorflow_probability.python.experimental.bayesopt.acquisition import acquisition_function
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow_probability.python.internal import samplers
label_desc: Use image node_id 5 for calling the ParallelExpectedImprovement obj's underlying member method code with example usage: obj.is_parallel() and returns: True