Example #1
0
    def __init__(self, state_size, action_size):
        self.t = 0
        self.max_Q = 0
        self.train = True
        self.lane_detection = False  # Set to True to train on images with segmented lane lines

        # Get size of state and action
        self.state_size = state_size
        self.action_size = action_size

        # These are hyper parameters for the DQN
        self.discount_factor = 0.99
        self.learning_rate = 1e-4
        if (self.train):
            self.epsilon = 1.0
            self.initial_epsilon = 1.0
        else:
            self.epsilon = 1e-6
            self.initial_epsilon = 1e-6
        self.epsilon_min = 0.02
        self.batch_size = 64
        self.train_start = 100
        self.explore = 10000

        # Create replay memory using deque
        self.memory = deque(maxlen=100000)

        self.vae_used = False

        if self.vae_used:
            vae_path = 'vae-level-0-dim-32.pkl'
            # assert vae_path == None , "Missing weight file for vae"
            self.vae = load_vae(vae_path)
        # Create main model and target model
        self.model = self.build_model()
        self.target_model = self.build_model()

        # Copy the model to target model
        # --> initialize the target model so that the parameters of model & target model to be same
        self.update_target_model()
Example #2
0
                                    '{}_{}'.format(ENV_ID, args.exp_id))
        else:
            log_path = os.path.join(folder, algo)

        model_path = "{}/{}.pkl".format(log_path, ENV_ID)

        assert os.path.isdir(log_path), "The {} folder was not found".format(
            log_path)
        assert os.path.isfile(
            model_path), "No model found for {} on {}, path: {}".format(
                algo, ENV_ID, model_path)
        model = ALGOS[algo].load(model_path)

    if args.vae_path != '':
        print("Loading VAE ...")
        vae = load_vae(args.vae_path)

    if vae is None:
        N_COMMAND_HISTORY = 0

    env = DonkeyVAEEnv(level=LEVEL,
                       frame_skip=TEST_FRAME_SKIP,
                       vae=vae,
                       const_throttle=None,
                       min_throttle=MIN_THROTTLE,
                       max_throttle=MAX_THROTTLE,
                       max_cte_error=10,
                       n_command_history=N_COMMAND_HISTORY)
    env = Recorder(env, folder=args.record_folder, verbose=1)
    try:
        env = TeleopEnv(env, model=model)
Example #3
0
args = parser.parse_args()

set_global_seeds(args.seed)

if args.trained_agent != "":
    assert args.trained_agent.endswith('.pkl') and os.path.isfile(args.trained_agent), \
        "The trained_agent must be a valid path to a .pkl file"

tensorboard_log = None if args.tensorboard_log == '' else args.tensorboard_log + '/' + ENV_ID

print("=" * 10, ENV_ID, args.algo, "=" * 10)

vae = None
if args.vae_path != '':
    print("Loading VAE ...")
    vae = load_vae(args.vae_path)
elif args.random_features:
    print("Randomly initialized VAE")
    vae = load_vae(z_size=Z_SIZE)
    # Save network
    args.save_vae = True
else:
    print("Learning from pixels...")

# Load hyperparameters from yaml file
with open('hyperparams/{}.yml'.format(args.algo), 'r') as f:
    hyperparams = yaml.load(f, Loader=yaml.UnsafeLoader)[BASE_ENV]

hyperparams['seed'] = args.seed
# Sort hyperparams that will be saved
saved_hyperparams = OrderedDict([(key, hyperparams[key])
Example #4
0
args = parser.parse_args()

set_global_seeds(args.seed)

if args.trained_agent != "":
    assert args.trained_agent.endswith('.pkl') and os.path.isfile(args.trained_agent), \
        "The trained_agent must be a valid path to a .pkl file"

tensorboard_log = None if args.tensorboard_log == '' else os.path.join(args.tensorboard_log, ID_ENV)

print("=" * 10, ID_ENV, args.algo, "=" * 10)

vae = None
if args.vae_path != '':
    print("Loading VAE ...")
    vae = load_vae(args.vae_path, input_dimension=(IMAGE_HEIGHT, IMAGE_WIDTH, 3))
elif args.random_features:
    print("Randomly initialized VAE")
    vae = load_vae(z_size=Z_SIZE)
    # Save network
    args.save_vae = True
else:
    print("Learning from pixels...")

# Load hyperparameters from yaml file
with open('hyperparams/{}.yml'.format(args.algo), 'r') as f:
    hyperparams = yaml.load(f)[args.name_env] # wyb

# Sort hyperparams that will be saved
saved_hyperparams = OrderedDict([(key, hyperparams[key]) for key in sorted(hyperparams.keys())])
# save vae path