code: def test_curiosity_on_frozen_lake(self):
      config = (
          ppo.PPOConfig()
          # A very large frozen-lake that's hard for a random policy to solve
          # due to 0.0 feedback.
          .environment(
              "FrozenLake-v1",
              env_config={
                  "desc": [
                      "SFFFFFFF",
                      "FFFFFFFF",
                      "FFFFFFFF",
                      "FFFFFFFF",
                      "FFFFFFFF",
                      "FFFFFFFF",
                      "FFFFFFFF",
                      "FFFFFFFG",
                  ],
                  "is_slippery": False,
                  "max_episode_steps": 16,
              },
          )
          # Print out observations to see how far we already get inside the Env.
          .callbacks(MyCallBack)
          # Limit horizon to make it really hard for non-curious agent to reach
          # the goal state.
          .rollouts(num_rollout_workers=0)
          # TODO (Kourosh): We need to provide examples on how we do curiosity with
          # RLModule API
          .training(lr=0.001).exploration(
              exploration_config={
                  "type": "Curiosity",
                  "eta": 0.2,
                  "lr": 0.001,
                  "feature_dim": 128,
                  "feature_net_config": {
                      "fcnet_hiddens": [],
                      "fcnet_activation": "relu",
                  },
                  "sub_exploration": {
                      "type": "StochasticSampling",
                  },
              }
          )
      )
  
      num_iterations = 10
      for _ in framework_iterator(config, frameworks=("tf", "torch")):
          # W/ Curiosity. Expect to learn something.
          algo = config.build()
          learnt = False
          for i in range(num_iterations):
              result = algo.train()
              print(result)
              if result["episode_reward_max"] > 0.0:
                  print("Reached goal after {} iters!".format(i))
                  learnt = True
                  break
          algo.stop()
          self.assertTrue(learnt)
  
imports: from collections import deque
  import gymnasium
  import minigrid
  import numpy
  import sys
  import unittest
  import ray
  from ray import air, tune
  from ray.rllib.algorithms.callbacks import DefaultCallbacks
  import ray.rllib.algorithms.ppo
  from ray.rllib.utils.test_utils import check_learning_achieved, framework_iterator
  from ray.rllib.utils.numpy import one_hot
  from ray.tune import register_env
label_desc: Use image node_id 3 for calling the TestCuriosity obj's underlying member method code with example usage: obj.test_curiosity_on_frozen_lake() without return types