class_docstr: Simple Vanilla Policy Gradient.
  
  Args:
      env_spec (EnvSpec): Environment specification.
      policy (garage.tf.policies.StochasticPolicy): Policy.
      sampler (garage.sampler.Sampler): Sampler.
docstr: Obtain samplers and start actual training for each epoch.
  
  Args:
      trainer (Trainer): Experiment trainer.
docstr_tok: ["Obtain","samplers","and","start","actual","training","for","each","epoch",".","Args",":","trainer","(","Trainer",")",":","Experiment","trainer","."]
code: def train(self, trainer):
      """Obtain samplers and start actual training for each epoch.
  
      Args:
          trainer (Trainer): Experiment trainer.
  
      """
      for epoch in trainer.step_epochs():
          samples = trainer.obtain_samples(epoch)
          log_performance(
              epoch,
              EpisodeBatch.from_list(self.env_spec, samples),
              self._discount,
          )
          self._train_once(samples)
  
file_path: garage/src/garage/examples/torch/tutorial_vpg.py
imports: import numpy
  import torch
  from garage import EpisodeBatch, log_performance, wrap_experiment
  from garage.envs import PointEnv
  from garage.experiment.deterministic import set_seed
  from garage.np import discount_cumsum
  from garage.sampler import LocalSampler
  from garage.torch.policies import GaussianMLPPolicy
  from garage.trainer import Trainer
label_desc: Use image node_id 2 for calling the SimpleVPG obj's underlying member method code with example usage: obj.train(trainer) without return types