code: def _hessian_vector_product(flat_grads, params, vec):
      """Compute hessian vector product efficiently by backprop."""
      grads = chainer.grad([F.sum(flat_grads * vec)], params)
      assert all(
          grad is not None for grad in grads
      ), "The Hessian-vector product contains None."
      grads_data = [grad.array for grad in grads]
      return _flatten_and_concat_ndarrays(grads_data)
  
imports: import collections
  import itertools
  from logging import getLogger
  import random
  import chainer
  import chainer.functions
  import numpy
  import chainerrl
  from chainerrl import agent
  from chainerrl.agents.ppo import _compute_explained_variance
  from chainerrl.agents.ppo import _make_dataset
  from chainerrl.agents.ppo import _make_dataset_recurrent
  from chainerrl.agents.ppo import _yield_subset_of_sequences_with_fixed_number_of_items
  from chainerrl.misc.batch_states import batch_states
label_desc: Use image node_id 7 for calling a global function with example usage: _hessian_vector_product(flat_grads, params, vec) and returns: _flatten_and_concat_ndarrays