class_docstr: Stationary Stochastic Bandit environment with per-arm features.
class_docstr_tok: ["Stationary","Stochastic","Bandit","environment","with","per-arm","features","."]
code: def _batched_inner_product(self, global_obs, item_obs):
      left = np.matmul(item_obs, self._scores_weight_matrix)
      expanded_left = np.expand_dims(left, axis=-2)
      expanded_globals = np.reshape(
          global_obs,
          newshape=[self._batch_size, 1, self._global_dim, 1],
      )
      scores = np.reshape(
          np.matmul(expanded_left, expanded_globals),
          newshape=[self._batch_size, -1],
      )
      return scores
  
imports: from typing import Callable, Optional, Sequence, Text
  import numpy
  import tensorflow
  from tf_agents.bandits.environments import bandit_py_environment
  from tf_agents.bandits.specs import utils
  from tf_agents.specs import array_spec
  from tf_agents.trajectories import time_step
  from tf_agents.typing import types
label_desc: Use image node_id 8 for calling the RankingPyEnvironment obj's underlying member method code with example usage: obj._batched_inner_product(global_obs, item_obs) and returns: scores