In Keras library, what is the meaning of “nb_steps_warmup” in the DQNAgent Object initialization?












1












$begingroup$


I can't understand the meaning of "nb_steps_warmup", a parameter of the __init__ function of DQNAgent class of the Keras_RL module.



I just know that when I set small value for "nb_steps_warmup" the command line prints: UserWarning: Not enough entries to sample without replacement. Consider increasing your warm-up phase to avoid oversampling!



This is my code:



import numpy as np
import gym
import gym_briscola
import argparse
import os

from keras.models import Sequential
from keras.layers import Dense, Activation, Flatten
from keras.optimizers import Adam

from rl.agents.dqn import DQNAgent
from rl.policy import BoltzmannQPolicy
from rl.memory import SequentialMemory
import logging


def getModel(input_shape, nb_actions):

# Next, we build a very simple model.
model = Sequential()
model.add(Flatten(input_shape = input_shape))
model.add(Dense(nb_actions, activation = 'relu'))
for i in range(2):
model.add(Dense(2, activation = 'relu'))

model.add(Dense(nb_actions, activation = 'relu'))
# print(model.summary())
return model

def init():

ENV_NAME = 'Briscola-v0'

# Get the environment and extract the number of actions.
env = gym.make(ENV_NAME)
env.setName("Inteligence")
env.cicle = True
nb_actions = env.action_space.n
window_length = 10

input_shape = (window_length, 5)

# Finally, we configure and compile our agent. You can use every built-in Keras optimizer and
# even the metrics!
memory = SequentialMemory(limit=50000, window_length=window_length)

#Maxwell-boltzmann distribution
policy = BoltzmannQPolicy()
dqn = DQNAgent(model=getModel(input_shape, nb_actions), nb_actions=nb_actions, memory=memory, nb_steps_warmup=11,
target_model_update=1e-5, policy=policy, dueling_type='avg', enable_dueling_network=True)

print("Compila")
dqn.compile(Adam(lr=1e-5), metrics=['mae'])

try:
dqn.load_weights('dqn_{}_weights.h5f'.format(ENV_NAME))
except OSError:
print("File non trovato")

return dqn, env, ENV_NAME

def startTraining():

dqn, env, ENV_NAME = init()

print("Fit")
dqn.fit(env, nb_steps=5E6, visualize=False, verbose=1, log_interval=1000)

# After training is done, we save the final weights.
dqn.save_weights('dqn_{}_weights.h5f'.format(ENV_NAME), overwrite=True)


def startTest():

dqn, env, _ = init()

print("Test")
# Finally, evaluate our algorithm for 5 episodes.
dqn.test(env, nb_episodes=10, visualize=False)

#Log config
def setLogging(show = True):
logging.getLogger("Briscola").propagate = show
logging.getLogger("IA").propagate = True
logging.getLogger("Client").propagate = show
logging.getLogger("Vincitore").propagate = show

logging.basicConfig(level=logging.INFO)

if __name__ == "__main__":

#Parameter settings
parser = argparse.ArgumentParser()
parser.add_argument("-m", "--modality", help="The modality of the program", const="train", nargs='?')
parser.add_argument("-l", "--logging", help="Enable logging", type=bool, const=False, nargs='?')
args = parser.parse_args()

setLogging(True)
print("Avvio modalita' ", args.modality)

if args.modality == "test":
startTest()
else:
startTraining()

print("Fine")


This is the doc of the module: https://keras-rl.readthedocs.io/en/latest/agents/dqn/



I hope I was clear with my English.










share|improve this question









New contributor




Daniele Tr is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







$endgroup$

















    1












    $begingroup$


    I can't understand the meaning of "nb_steps_warmup", a parameter of the __init__ function of DQNAgent class of the Keras_RL module.



    I just know that when I set small value for "nb_steps_warmup" the command line prints: UserWarning: Not enough entries to sample without replacement. Consider increasing your warm-up phase to avoid oversampling!



    This is my code:



    import numpy as np
    import gym
    import gym_briscola
    import argparse
    import os

    from keras.models import Sequential
    from keras.layers import Dense, Activation, Flatten
    from keras.optimizers import Adam

    from rl.agents.dqn import DQNAgent
    from rl.policy import BoltzmannQPolicy
    from rl.memory import SequentialMemory
    import logging


    def getModel(input_shape, nb_actions):

    # Next, we build a very simple model.
    model = Sequential()
    model.add(Flatten(input_shape = input_shape))
    model.add(Dense(nb_actions, activation = 'relu'))
    for i in range(2):
    model.add(Dense(2, activation = 'relu'))

    model.add(Dense(nb_actions, activation = 'relu'))
    # print(model.summary())
    return model

    def init():

    ENV_NAME = 'Briscola-v0'

    # Get the environment and extract the number of actions.
    env = gym.make(ENV_NAME)
    env.setName("Inteligence")
    env.cicle = True
    nb_actions = env.action_space.n
    window_length = 10

    input_shape = (window_length, 5)

    # Finally, we configure and compile our agent. You can use every built-in Keras optimizer and
    # even the metrics!
    memory = SequentialMemory(limit=50000, window_length=window_length)

    #Maxwell-boltzmann distribution
    policy = BoltzmannQPolicy()
    dqn = DQNAgent(model=getModel(input_shape, nb_actions), nb_actions=nb_actions, memory=memory, nb_steps_warmup=11,
    target_model_update=1e-5, policy=policy, dueling_type='avg', enable_dueling_network=True)

    print("Compila")
    dqn.compile(Adam(lr=1e-5), metrics=['mae'])

    try:
    dqn.load_weights('dqn_{}_weights.h5f'.format(ENV_NAME))
    except OSError:
    print("File non trovato")

    return dqn, env, ENV_NAME

    def startTraining():

    dqn, env, ENV_NAME = init()

    print("Fit")
    dqn.fit(env, nb_steps=5E6, visualize=False, verbose=1, log_interval=1000)

    # After training is done, we save the final weights.
    dqn.save_weights('dqn_{}_weights.h5f'.format(ENV_NAME), overwrite=True)


    def startTest():

    dqn, env, _ = init()

    print("Test")
    # Finally, evaluate our algorithm for 5 episodes.
    dqn.test(env, nb_episodes=10, visualize=False)

    #Log config
    def setLogging(show = True):
    logging.getLogger("Briscola").propagate = show
    logging.getLogger("IA").propagate = True
    logging.getLogger("Client").propagate = show
    logging.getLogger("Vincitore").propagate = show

    logging.basicConfig(level=logging.INFO)

    if __name__ == "__main__":

    #Parameter settings
    parser = argparse.ArgumentParser()
    parser.add_argument("-m", "--modality", help="The modality of the program", const="train", nargs='?')
    parser.add_argument("-l", "--logging", help="Enable logging", type=bool, const=False, nargs='?')
    args = parser.parse_args()

    setLogging(True)
    print("Avvio modalita' ", args.modality)

    if args.modality == "test":
    startTest()
    else:
    startTraining()

    print("Fine")


    This is the doc of the module: https://keras-rl.readthedocs.io/en/latest/agents/dqn/



    I hope I was clear with my English.










    share|improve this question









    New contributor




    Daniele Tr is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.







    $endgroup$















      1












      1








      1





      $begingroup$


      I can't understand the meaning of "nb_steps_warmup", a parameter of the __init__ function of DQNAgent class of the Keras_RL module.



      I just know that when I set small value for "nb_steps_warmup" the command line prints: UserWarning: Not enough entries to sample without replacement. Consider increasing your warm-up phase to avoid oversampling!



      This is my code:



      import numpy as np
      import gym
      import gym_briscola
      import argparse
      import os

      from keras.models import Sequential
      from keras.layers import Dense, Activation, Flatten
      from keras.optimizers import Adam

      from rl.agents.dqn import DQNAgent
      from rl.policy import BoltzmannQPolicy
      from rl.memory import SequentialMemory
      import logging


      def getModel(input_shape, nb_actions):

      # Next, we build a very simple model.
      model = Sequential()
      model.add(Flatten(input_shape = input_shape))
      model.add(Dense(nb_actions, activation = 'relu'))
      for i in range(2):
      model.add(Dense(2, activation = 'relu'))

      model.add(Dense(nb_actions, activation = 'relu'))
      # print(model.summary())
      return model

      def init():

      ENV_NAME = 'Briscola-v0'

      # Get the environment and extract the number of actions.
      env = gym.make(ENV_NAME)
      env.setName("Inteligence")
      env.cicle = True
      nb_actions = env.action_space.n
      window_length = 10

      input_shape = (window_length, 5)

      # Finally, we configure and compile our agent. You can use every built-in Keras optimizer and
      # even the metrics!
      memory = SequentialMemory(limit=50000, window_length=window_length)

      #Maxwell-boltzmann distribution
      policy = BoltzmannQPolicy()
      dqn = DQNAgent(model=getModel(input_shape, nb_actions), nb_actions=nb_actions, memory=memory, nb_steps_warmup=11,
      target_model_update=1e-5, policy=policy, dueling_type='avg', enable_dueling_network=True)

      print("Compila")
      dqn.compile(Adam(lr=1e-5), metrics=['mae'])

      try:
      dqn.load_weights('dqn_{}_weights.h5f'.format(ENV_NAME))
      except OSError:
      print("File non trovato")

      return dqn, env, ENV_NAME

      def startTraining():

      dqn, env, ENV_NAME = init()

      print("Fit")
      dqn.fit(env, nb_steps=5E6, visualize=False, verbose=1, log_interval=1000)

      # After training is done, we save the final weights.
      dqn.save_weights('dqn_{}_weights.h5f'.format(ENV_NAME), overwrite=True)


      def startTest():

      dqn, env, _ = init()

      print("Test")
      # Finally, evaluate our algorithm for 5 episodes.
      dqn.test(env, nb_episodes=10, visualize=False)

      #Log config
      def setLogging(show = True):
      logging.getLogger("Briscola").propagate = show
      logging.getLogger("IA").propagate = True
      logging.getLogger("Client").propagate = show
      logging.getLogger("Vincitore").propagate = show

      logging.basicConfig(level=logging.INFO)

      if __name__ == "__main__":

      #Parameter settings
      parser = argparse.ArgumentParser()
      parser.add_argument("-m", "--modality", help="The modality of the program", const="train", nargs='?')
      parser.add_argument("-l", "--logging", help="Enable logging", type=bool, const=False, nargs='?')
      args = parser.parse_args()

      setLogging(True)
      print("Avvio modalita' ", args.modality)

      if args.modality == "test":
      startTest()
      else:
      startTraining()

      print("Fine")


      This is the doc of the module: https://keras-rl.readthedocs.io/en/latest/agents/dqn/



      I hope I was clear with my English.










      share|improve this question









      New contributor




      Daniele Tr is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.







      $endgroup$




      I can't understand the meaning of "nb_steps_warmup", a parameter of the __init__ function of DQNAgent class of the Keras_RL module.



      I just know that when I set small value for "nb_steps_warmup" the command line prints: UserWarning: Not enough entries to sample without replacement. Consider increasing your warm-up phase to avoid oversampling!



      This is my code:



      import numpy as np
      import gym
      import gym_briscola
      import argparse
      import os

      from keras.models import Sequential
      from keras.layers import Dense, Activation, Flatten
      from keras.optimizers import Adam

      from rl.agents.dqn import DQNAgent
      from rl.policy import BoltzmannQPolicy
      from rl.memory import SequentialMemory
      import logging


      def getModel(input_shape, nb_actions):

      # Next, we build a very simple model.
      model = Sequential()
      model.add(Flatten(input_shape = input_shape))
      model.add(Dense(nb_actions, activation = 'relu'))
      for i in range(2):
      model.add(Dense(2, activation = 'relu'))

      model.add(Dense(nb_actions, activation = 'relu'))
      # print(model.summary())
      return model

      def init():

      ENV_NAME = 'Briscola-v0'

      # Get the environment and extract the number of actions.
      env = gym.make(ENV_NAME)
      env.setName("Inteligence")
      env.cicle = True
      nb_actions = env.action_space.n
      window_length = 10

      input_shape = (window_length, 5)

      # Finally, we configure and compile our agent. You can use every built-in Keras optimizer and
      # even the metrics!
      memory = SequentialMemory(limit=50000, window_length=window_length)

      #Maxwell-boltzmann distribution
      policy = BoltzmannQPolicy()
      dqn = DQNAgent(model=getModel(input_shape, nb_actions), nb_actions=nb_actions, memory=memory, nb_steps_warmup=11,
      target_model_update=1e-5, policy=policy, dueling_type='avg', enable_dueling_network=True)

      print("Compila")
      dqn.compile(Adam(lr=1e-5), metrics=['mae'])

      try:
      dqn.load_weights('dqn_{}_weights.h5f'.format(ENV_NAME))
      except OSError:
      print("File non trovato")

      return dqn, env, ENV_NAME

      def startTraining():

      dqn, env, ENV_NAME = init()

      print("Fit")
      dqn.fit(env, nb_steps=5E6, visualize=False, verbose=1, log_interval=1000)

      # After training is done, we save the final weights.
      dqn.save_weights('dqn_{}_weights.h5f'.format(ENV_NAME), overwrite=True)


      def startTest():

      dqn, env, _ = init()

      print("Test")
      # Finally, evaluate our algorithm for 5 episodes.
      dqn.test(env, nb_episodes=10, visualize=False)

      #Log config
      def setLogging(show = True):
      logging.getLogger("Briscola").propagate = show
      logging.getLogger("IA").propagate = True
      logging.getLogger("Client").propagate = show
      logging.getLogger("Vincitore").propagate = show

      logging.basicConfig(level=logging.INFO)

      if __name__ == "__main__":

      #Parameter settings
      parser = argparse.ArgumentParser()
      parser.add_argument("-m", "--modality", help="The modality of the program", const="train", nargs='?')
      parser.add_argument("-l", "--logging", help="Enable logging", type=bool, const=False, nargs='?')
      args = parser.parse_args()

      setLogging(True)
      print("Avvio modalita' ", args.modality)

      if args.modality == "test":
      startTest()
      else:
      startTraining()

      print("Fine")


      This is the doc of the module: https://keras-rl.readthedocs.io/en/latest/agents/dqn/



      I hope I was clear with my English.







      machine-learning reinforcement-learning






      share|improve this question









      New contributor




      Daniele Tr is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      share|improve this question









      New contributor




      Daniele Tr is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      share|improve this question




      share|improve this question








      edited 6 mins ago









      Wes

      42812




      42812






      New contributor




      Daniele Tr is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked 10 hours ago









      Daniele TrDaniele Tr

      62




      62




      New contributor




      Daniele Tr is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      Daniele Tr is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      Daniele Tr is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






















          0






          active

          oldest

          votes











          Your Answer





          StackExchange.ifUsing("editor", function () {
          return StackExchange.using("mathjaxEditing", function () {
          StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
          StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
          });
          });
          }, "mathjax-editing");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "557"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });






          Daniele Tr is a new contributor. Be nice, and check out our Code of Conduct.










          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdatascience.stackexchange.com%2fquestions%2f46056%2fin-keras-library-what-is-the-meaning-of-nb-steps-warmup-in-the-dqnagent-objec%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes








          Daniele Tr is a new contributor. Be nice, and check out our Code of Conduct.










          draft saved

          draft discarded


















          Daniele Tr is a new contributor. Be nice, and check out our Code of Conduct.













          Daniele Tr is a new contributor. Be nice, and check out our Code of Conduct.












          Daniele Tr is a new contributor. Be nice, and check out our Code of Conduct.
















          Thanks for contributing an answer to Data Science Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          Use MathJax to format equations. MathJax reference.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdatascience.stackexchange.com%2fquestions%2f46056%2fin-keras-library-what-is-the-meaning-of-nb-steps-warmup-in-the-dqnagent-objec%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Aikido

          The minimum number of groups for any class cannot be less than 2 error

          SMOTE: ValueError: Expected n_neighbors <= n_samples, but n_samples = 1, n_neighbors = 6