def main():
"""
:return:
"""
_visualiser = None
if C.USE_VISDOM:
_visualiser = Visdom(C.VISDOM_SERVER)
_environment = neo.make(C.ENVIRONMENT,
connect_to_running=C.CONNECT_TO_RUNNING,
logging_directory=C.LOGGING_DIRECTORY,
debug_logging=C.USE_LOGGING)
_environment.seed(C.RANDOM_SEED)
if type(C.ARCH_PARAMS['input_size']) == str:
C.ARCH_PARAMS['input_size'] = _environment.observation_space.shape
print('observation dimensions: ', C.ARCH_PARAMS['input_size'])
if type(C.ARCH_PARAMS['output_size']) == str:
C.ARCH_PARAMS['output_size'] = _environment.action_space.n
print('action dimensions: ', C.ARCH_PARAMS['output_size'])
_model = C.ARCH(C.ARCH_PARAMS)
if C.LOAD_PREVIOUS_MODEL_IF_AVAILABLE:
_model.load_state_dict(load_model(C))
_target_model = C.ARCH(C.ARCH_PARAMS)
_target_model.load_state_dict(_model.state_dict())
if C.USE_CUDA_IF_AVAILABLE:
_model = _model.cuda()
_target_model.cuda()
_trained_model = training_loop(_model,
_target_model,
_environment,
_visualiser)
_environment.close()
save_model(_trained_model, C)
python类Visdom()的实例源码
def main():
"""
:return:
"""
_visualiser = None
if C.USE_VISDOM:
_visualiser = Visdom(C.VISDOM_SERVER)
_environment = neo.make(C.ENVIRONMENT,
connect_to_running=C.CONNECT_TO_RUNNING,
logging_directory=C.LOGGING_DIRECTORY,
debug_logging=C.USE_LOGGING)
_environment.seed(C.RANDOM_SEED)
if type(C.ARCH_PARAMS['input_size']) == str:
C.ARCH_PARAMS['input_size'] = _environment.observation_space.shape
print('observation dimensions: ', C.ARCH_PARAMS['input_size'])
if type(C.ARCH_PARAMS['output_size']) == str:
C.ARCH_PARAMS['output_size'] = _environment.action_space.n
print('action dimensions: ', C.ARCH_PARAMS['output_size'])
_agent = PolicyAgent(C.ARCH_PARAMS['input_size'],C.ARCH_PARAMS['output_size'])
_trained_model = training_loop(_agent,
_environment)
_environment.render(close=True)
_environment.close()
save_model(_trained_model, C)
def __init__(self, server, port, outdir):
self.vis = visdom.Visdom(port=port, server=server)
titles = ['VAE -- KL Div', 'VAE -- Weighted L2', 'VAE -- L2']
self.vis_plot_vae = []
for title in titles:
self.vis_plot_vae.append(self.vis.line(
X=np.array([0.], dtype='f'),
Y=np.array([0.], dtype='f'),
opts=dict(
xlabel='Iteration',\
ylabel='Loss',\
title=title)))
self.vis_plot_test_vae = self.vis.line(
X=np.array([0.], dtype='f'),
Y=np.array([0.], dtype='f'),
opts=dict(
xlabel='Iteration',\
ylabel='Test Loss',\
title='VAE Test Loss'))
self.vis_plot_mdn = []
titles = ['MDN Loss', 'MDN -- L2']
for title in titles:
self.vis_plot_mdn.append(self.vis.line(
X=np.array([0.], dtype='f'),
Y=np.array([0.], dtype='f'),
opts=dict(
xlabel='Iteration',\
ylabel='Loss',\
title=title)))
self.fp_vae = open('%s/log_vae.txt' % outdir, 'w')
self.fp_vae.write('Iteration; KLDiv; WeightedL2; L2;\n')
self.fp_vae.flush()
self.fp_test_vae = open('%s/log_test_vae.txt' % outdir, 'w')
self.fp_test_vae.write('Iteration; Loss;\n')
self.fp_test_vae.flush()
self.fp_mdn = open('%s/log_mdn.txt' % outdir, 'w')
self.fp_mdn.write('Iteration; Loss; L2 Loss;\n')
self.fp_mdn.flush()
def __init__(self):
self.verbose = 0 # 0(warning) | 1(info) | 2(debug)
# training signature
self.machine = "daim" # "machine_id"
self.timestamp = "17080800" # "yymmdd##"
# training configuration
self.mode = 1 # 1(train) | 2(test model_file)
self.config = 1
self.seed = 1
self.render = False # whether render the window from the original envs or not
self.visualize = True # whether do online plotting and stuff or not
self.save_best = False # save model w/ highest reward if True, otherwise always save the latest model
self.agent_type, self.env_type, self.game, self.circuit_type = CONFIGS[self.config]
self.use_cuda = torch.cuda.is_available()
self.dtype = torch.cuda.FloatTensor if torch.cuda.is_available() else torch.FloatTensor
# prefix for model/log/visdom
self.refs = self.machine + "_" + self.timestamp # NOTE: using this as env for visdom
self.root_dir = os.getcwd()
# model files
# NOTE: will save the current model to model_name
self.model_name = self.root_dir + "/models/" + self.refs + ".pth"
# NOTE: will load pretrained model_file if not None
self.model_file = None#self.root_dir + "/models/{TODO:FILL_IN_PRETAINED_MODEL_FILE}.pth"
if self.mode == 2:
self.model_file = self.model_name # NOTE: so only need to change self.mode to 2 to test the current training
assert self.model_file is not None, "Pre-Trained model is None, Testing aborted!!!"
self.refs = self.refs + "_test" # NOTE: using this as env for visdom for testing, to avoid accidentally redraw on the training plots
# logging configs
self.log_name = self.root_dir + "/logs/" + self.refs + ".log"
self.logger = loggerConfig(self.log_name, self.verbose)
self.logger.warning("<===================================>")
if self.visualize:
self.vis = visdom.Visdom()
self.logger.warning("bash$: python -m visdom.server") # activate visdom server on bash
self.logger.warning("http://localhost:8097/env/" + self.refs) # open this address on browser
def main():
"""
:return:
"""
_visualiser = None
if C.USE_VISDOM:
_visualiser = Visdom(C.VISDOM_SERVER)
_environment = neo.make(C.ENVIRONMENT,
connect_to_running=C.CONNECT_TO_RUNNING,
logging_directory=C.LOGGING_DIRECTORY,
debug_logging=C.USE_LOGGING)
_environment.seed(C.RANDOM_SEED)
if type(C.ARCH_PARAMS['input_size']) == str:
C.ARCH_PARAMS['input_size'] = _environment.observation_space.shape
print('observation dimensions: ', C.ARCH_PARAMS['input_size'])
if type(C.ARCH_PARAMS['output_size']) == str:
C.ARCH_PARAMS['output_size'] = _environment.action_space.n
print('action dimensions: ', C.ARCH_PARAMS['output_size'])
_model = C.ARCH(C.ARCH_PARAMS)
if C.LOAD_PREVIOUS_MODEL_IF_AVAILABLE:
_model.load_state_dict(load_model(C))
_target_model = C.ARCH(C.ARCH_PARAMS)
_target_model.load_state_dict(_model.state_dict())
if C.USE_CUDA_IF_AVAILABLE:
_model = _model.cuda()
_target_model.cuda()
_trained_model = training_loop(_model,
_target_model,
_environment,
_visualiser)
# _environment.render(close=True)
_environment.close()
save_model(_trained_model, C)