def loop(): logger.info(a=2, b=1) logger.add_indicator(Queue("reward", 10, True)) for i in range(100): logger.write(i, loss=100 / (i + 1), reward=math.pow(2, (i + 1))) if (i + 1) % 2 == 0: logger.write(valid=i**10) logger.new_line() time.sleep(0.3)
def loop(): logger.info(a=2, b=1) logger.add_indicator('loss_ma', IndicatorType.queue, IndicatorOptions(queue_size=10)) for i in range(10): logger.add_global_step(1) logger.store(loss=100 / (i + 1), loss_ma=100 / (i + 1)) logger.write() if (i + 1) % 2 == 0: logger.new_line() time.sleep(2)
def __call__(self): # Training and testing logger_util.add_model_indicators(self.model) logger.add_indicator(Queue("train_loss", 20, True)) logger.add_indicator(Histogram("test_loss", True)) logger.add_indicator(Histogram("accuracy", True)) logger.add_indicator(IndexedScalar('test_sample_loss')) logger.add_indicator(IndexedScalar('test_sample_pred')) test_data = np.array([d[0].numpy() for d in self.test_loader.dataset]) logger.save_numpy("test_data", test_data) for _ in self.loop: self._train() self._test() self.__log_model_params()
def startup(self): logger_util.add_model_indicators(self.model) logger.add_indicator("train_loss", IndicatorType.queue, IndicatorOptions(queue_size=20, is_print=True)) logger.add_indicator("test_loss", IndicatorType.histogram, IndicatorOptions(is_print=True)) logger.add_indicator("accuracy", IndicatorType.histogram, IndicatorOptions(is_print=True))
def __call__(self): logger_util.add_model_indicators(self.model) logger.add_indicator(Queue("train_loss", 20, True)) logger.add_indicator(Histogram("test_loss", True)) logger.add_indicator(Histogram("accuracy", True)) for _ in self.loop: self._train() self._test() self.__log_model_params()
def __call__(self): # Training and testing logger_util.add_model_indicators(self.model) logger.add_indicator("train_loss", IndicatorType.queue, IndicatorOptions(queue_size=20, is_print=True)) logger.add_indicator("test_loss", IndicatorType.histogram, IndicatorOptions(is_print=True)) logger.add_indicator("accuracy", IndicatorType.histogram, IndicatorOptions(is_print=True)) for _ in self.loop: self._train() self._test() self.__log_model_params()
def main(): args = parse_args() use_cuda = not args.no_cuda and torch.cuda.is_available() torch.manual_seed(args.seed) device = torch.device("cuda" if use_cuda else "cpu") kwargs = {'num_workers': 1, 'pin_memory': True} if use_cuda else {} # Loading data with logger.section("Loading data"): train_loader = torch.utils.data.DataLoader(datasets.MNIST( './data', train=True, download=True, transform=transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307, ), (0.3081, )) ])), batch_size=args.batch_size, shuffle=True, **kwargs) test_loader = torch.utils.data.DataLoader( datasets.MNIST('./data', train=False, transform=transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307, ), (0.3081, )) ])), batch_size=args.test_batch_size, shuffle=True, **kwargs) # Model creation with logger.section("Create model"): model = Net().to(device) optimizer = optim.SGD(model.parameters(), lr=args.lr, momentum=args.momentum) # Specify indicators logger.add_indicator("train_loss", queue_limit=10, is_print=True) logger.add_indicator("test_loss", is_histogram=False, is_print=True) logger.add_indicator("accuracy", is_histogram=False, is_print=True) for name, param in model.named_parameters(): if param.requires_grad: logger.add_indicator(name, is_histogram=True, is_print=False) logger.add_indicator(f"{name}_grad", is_histogram=True, is_print=False) # Start the experiment EXPERIMENT.start_train() # Loop through the monitored iterator for epoch in logger.loop(range(0, args.epochs)): # Delayed keyboard interrupt handling to use # keyboard interrupts to end the loop. # This will capture interrupts and finish # the loop at the end of processing the iteration; # i.e. the loop won't stop in the middle of an epoch. try: with logger.delayed_keyboard_interrupt(): # Training and testing train(args, model, device, train_loader, optimizer, epoch) test(model, device, test_loader) # Add histograms with model parameter values and gradients for name, param in model.named_parameters(): if param.requires_grad: logger.store(name, param.data.cpu().numpy()) logger.store(f"{name}_grad", param.grad.cpu().numpy()) # Clear line and output to console logger.write() # Output the progress summaries to `trial.yaml` and # to the python file header logger.save_progress() # Clear line and go to the next line; # that is, we add a new line to the output # at the end of each epoch logger.new_line() # Handled delayed interrupt except KeyboardInterrupt: logger.finish_loop() logger.new_line() logger.log("\nKilling loop...") break
def add_model_indicators(model: torch.nn.Module, model_name: str = "model"): for name, param in model.named_parameters(): if param.requires_grad: logger.add_indicator(Histogram(f"{model_name}.{name}")) logger.add_indicator(Histogram(f"{model_name}.{name}.grad"))
def startup(self): logger_util.add_model_indicators(self.model) logger.add_indicator(Queue("train_loss", 20, True)) logger.add_indicator(Histogram("test_loss", True)) logger.add_indicator(Histogram("accuracy", True))
with logger.section("Create model"): # Indicate that this section failed. You don't have to set # this if it is successful. logger.set_successful(False) # Sleep for a minute. time.sleep(1) # Print sample info logger.info(one=1, two=2, string="string") # ### Set logger indicators # Reward is queued; this is useful when you want to track the moving # average of something. logger.add_indicator("reward", queue_limit=10) # By default everything is a set of values and will create a TensorBoard histogram # We specify that `fps` is a scalar. # If you store multiple values for this it will output the mean. logger.add_indicator("fps", is_histogram=False, is_print=False) # This will produce a histogram logger.add_indicator("loss", is_print=False) # A heat map logger.add_indicator("advantage_reward", is_histogram=False, is_print=False, is_pair=True)
def main(): args = parse_args() # Loading data with logger.section("Load data"): mnist = tf.keras.datasets.mnist (x_train, y_train), (x_test, y_test) = mnist.load_data() x_train, x_test = x_train / 255.0, x_test / 255.0 train_dataset = create_mnist_dataset(x_train, y_train, args.batch_size) test_dataset = create_mnist_dataset(x_test, y_test, args.batch_size) # Model creation with logger.section("Create model"): model = tf.keras.models.Sequential([ tf.keras.layers.Flatten(input_shape=(28, 28)), tf.keras.layers.Dense(512, activation=tf.nn.relu), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(10, activation=tf.nn.softmax) ]) # Creation of the trainer with logger.section("Create trainer"): optimizer = tf.train.AdamOptimizer(learning_rate=args.lr) train_iterator = train_dataset.make_initializable_iterator() data, target = train_iterator.get_next() train_loss = loss(model, data, target) train_op = optimizer.minimize(train_loss) test_iterator = test_dataset.make_initializable_iterator() data, target = test_iterator.get_next() test_loss = loss(model, data, target) test_accuracy = accuracy(model, data, target) logger.add_indicator("train_loss", queue_limit=10, is_print=True) logger.add_indicator("test_loss", is_histogram=False, is_print=True) logger.add_indicator("accuracy", is_histogram=False, is_print=True) # batches = len(x_train) // args.batch_size with tf.Session() as session: EXPERIMENT.start_train(session) # Loop through the monitored iterator for epoch in logger.loop(range(0, args.epochs)): # Delayed keyboard interrupt handling to use # keyboard interrupts to end the loop. # This will capture interrupts and finish # the loop at the end of processing the iteration; # i.e. the loop won't stop in the middle of an epoch. try: with logger.delayed_keyboard_interrupt(): # Training and testing session.run(train_iterator.initializer) train(args, session, train_loss, train_op, batches, epoch) session.run(test_iterator.initializer) test(session, test_loss, test_accuracy, len(x_test) // args.batch_size) # Clear line and output to console logger.write() # Output the progress summaries to `trial.yaml` and # to the python file header logger.save_progress() # Clear line and go to the next line; # that is, we add a new line to the output # at the end of each epoch logger.new_line() # Handled delayed interrupt except KeyboardInterrupt: logger.finish_loop() logger.new_line() logger.log("\nKilling loop...") break