title: how can i solve "empty() received an invalid combination of arguments - got (tuple, dtype=NoneType, device=NoneType)" in MushroomRL?
body: <p>I'm using MushroomRL for a Deep Reinforcement Learning project, and I'm using a Graph representation as RL Environment where the number of nodes represents the number of actions now in my neural network the input is one value ex: <code>tensor([[5.]]</code>, and the output Q is the number of nodes which is ten ex: <code>tensor([[5972.4927, 8562.3330, 7443.6479, 7326.1587, 6615.2090, 6617.3145,6911.8672, 8233.7930, 6821.0093, 7000.1182,]] </code>now I'm using a new framework called MushroomRL, and this is the code</p>
  <pre><code>if __name__ == '__main__':
  from mushroom_rl.core import Core
  from mushroom_rl.algorithms.value import TrueOnlineSARSALambda
  from mushroom_rl.policy import EpsGreedy
  from mushroom_rl.features import Features
  from mushroom_rl.features.tiles import Tiles
  from mushroom_rl.utils.dataset import compute_J
  from mushroom_rl.utils.parameters import LinearParameter, Parameter
  from mushroom_rl.approximators.parametric import TorchApproximator
  from mushroom_rl.algorithms.value import DQN
  
  
  
  # Set the seed
  np.random.seed(1)
  
  # Create the toy environment with default parameters
  #mdp = Environment.make('graph_env')
  mdp=graph_env()
      # Using an epsilon-greedy policy
  
  epsilon = Parameter(value=0.1)
  pi = EpsGreedy(epsilon=epsilon)
  
  # Policy
  epsilon = LinearParameter(value=1.,
                            threshold_value=.1,
                            n=1000000)
  epsilon_test = Parameter(value=.05)
  epsilon_random = Parameter(value=1)
  pi = EpsGreedy(epsilon=epsilon_random)
  
  
  
  
  approximator_params = dict(
      network=Network,
      input_shape=(1,),
      output_shape=(1,),
      n_actions=mdp.info.action_space.n,
      optimizer=optimizer,
      loss=F.mse_loss
  )
  
  approximator = TorchApproximator
  
  algorithm_params = dict(
  batch_size=32,
  target_update_frequency=target_update_frequency // train_frequency,
  replay_memory=True,
  initial_replay_size=initial_replay_size,
  max_replay_size=max_replay_size
  )
  
  agent=agent = DQN(mdp.info, pi, approximator,
          approximator_params=approximator_params,
          **algorithm_params)
  
  # Algorithm
  core = Core(agent, mdp)
  
  
  # RUN
  
  # Fill replay memory with random dataset
  print_epoch(0)
  core.learn(n_steps=initial_replay_size,n_steps_per_fit=initial_replay_size)
  
  # Evaluate initial policy
  pi.set_epsilon(epsilon_test)
  #mdp.set_episode_end(False)
  dataset = core.evaluate(n_steps=test_samples)
  scores.append(get_stats(dataset))
  
  for n_epoch in range(1, max_steps // evaluation_frequency + 1):
      print_epoch(n_epoch)
      print('- Learning:')
      # learning step
      pi.set_epsilon(epsilon)
      mdp.set_episode_end(True)
      core.learn(n_steps=evaluation_frequency,
                n_steps_per_fit=train_frequency)
  
      print('- Evaluation:')
      # evaluation step
      pi.set_epsilon(epsilon_test)
      mdp.set_episode_end(False)
      dataset = core.evaluate(n_steps=test_samples)
      scores.append(get_stats(dataset))
  </code></pre>
  <p>it givs me this error when i run the code</p>
  <pre><code>TypeError: empty() received an invalid combination of arguments - got (tuple, dtype=NoneType, device=NoneType), but expected one of:
   * (tuple of ints size, *, tuple of names names, torch.memory_format memory_format, torch.dtype dtype, torch.layout layout, torch.device device, bool pin_memory, bool requires_grad)
   * (tuple of ints size, *, torch.memory_format memory_format, Tensor out, torch.dtype dtype, torch.layout layout, torch.device device, bool pin_memory, bool requires_grad)
  </code></pre>
  <p>i beleve the proplem in part of the code can any one help to fix it ?</p>
  <pre><code></code></pre>