def infer_action(self, raw_obs, ids, policy="e_greedy", eps=0):
        """infer action for a batch of agents

        Parameters
        ----------
        raw_obs: tuple(numpy array, numpy array)
            raw observation of agents tuple(views, features)
        ids: numpy array
            ids of agents

        Returns
        -------
        acts: numpy array of int32
            actions for agents
        """
        view, feature = raw_obs[0], raw_obs[1]
        n = len(view)

        ret = np.empty(n, dtype=np.int32)
        self._reset_bind_size(n)
        data_batch = mx.io.DataBatch(data=[mx.nd.array(view), mx.nd.array(feature)])
        self.model.forward(data_batch, is_train=False)
        policy = self.model.get_outputs()[3].asnumpy()

        actions = np.arange(self.num_actions)
        for i in range(n):
            ret[i] = np.random.choice(actions, p=policy[i])
        return ret
infer action for a batch of agents

        Parameters
        ----------
        raw_obs: tuple(numpy array, numpy array)
            raw observation of agents tuple(views, features)
        ids: numpy array
            ids of agents

        Returns
        -------
        acts: numpy array of int32
            actions for agents
        
python/magent/builtin/mx_model/a2c.py