def make_optimizer(env):
    wrapper = optimizer.OptimizerWrapper()
    lr = optimizer.make_optimizer_variable(
        'learning_rate',
        get_env('trainer.policy_learning_rate'),
        prefix='policy_')
    wrapper.set_base_optimizer(optimizer.base.AdamOptimizer(lr, epsilon=1e-3))
    wrapper.append_grad_modifier(
        optimizer.grad_modifier.LearningRateMultiplier([
            ('*/b', 2.0),
        ]))
    env.set_policy_optimizer(wrapper)

    use_linear_vr = get_env('ppo.use_linear_vr')
    if not use_linear_vr:
        wrapper = optimizer.OptimizerWrapper()
        lr = optimizer.make_optimizer_variable(
            'learning_rate',
            get_env('trainer.value_learning_rate'),
            prefix='value_')
        wrapper.set_base_optimizer(
            optimizer.base.AdamOptimizer(lr, epsilon=1e-3))
        wrapper.append_grad_modifier(
            optimizer.grad_modifier.LearningRateMultiplier([
                ('*/b', 2.0),
            ]))
        env.set_value_optimizer(wrapper)
Example #2
0
def make_optimizer(env):
    lr = optimizer.base.make_optimizer_variable('learning_rate', get_env('trainer.learning_rate'))

    wrapper = optimizer.OptimizerWrapper()
    # generator learns 5 times faster
    wrapper.set_base_optimizer(optimizer.base.AdamOptimizer(lr * 5., beta1=0.5, epsilon=1e-6))
    wrapper.append_grad_modifier(optimizer.grad_modifier.LearningRateMultiplier([
        ('*/b', 2.0),
    ]))
    env.set_g_optimizer(wrapper)
    wrapper = optimizer.OptimizerWrapper()
    wrapper.set_base_optimizer(optimizer.base.AdamOptimizer(lr, beta1=0.5, epsilon=1e-6))
    wrapper.append_grad_modifier(optimizer.grad_modifier.LearningRateMultiplier([
        ('*/b', 2.0),
    ]))
    env.set_d_optimizer(wrapper)
Example #3
0
def make_optimizer(env):
    wrapper = optimizer.OptimizerWrapper()
    wrapper.set_base_optimizer(optimizer.base.MomentumOptimizer(get_env('trainer.learning_rate'), 0.9))
    wrapper.append_grad_modifier(optimizer.grad_modifier.LearningRateMultiplier([
        ('*/b', 2.0),
    ]))
    env.set_optimizer(wrapper)
Example #4
0
def make_rpredictor_optimizer(env):
    wrapper = optimizer.OptimizerWrapper()
    wrapper.set_base_optimizer(
        optimizer.base.AdamOptimizer(get_env('rpredictor.learning_rate'),
                                     epsilon=1e-3))
    wrapper.append_grad_modifier(
        optimizer.grad_modifier.LearningRateMultiplier([
            ('*/b', 2.0),
        ]))
    env.set_optimizer(wrapper)
Example #5
0
def make_optimizer(env):
    lr = optimizer.base.make_optimizer_variable('learning_rate', get_env('trainer.learning_rate'))

    wrapper = optimizer.OptimizerWrapper()
    wrapper.set_base_optimizer(optimizer.base.AdamOptimizer(lr))
    wrapper.append_grad_modifier(optimizer.grad_modifier.LearningRateMultiplier([
        ('*/b', 2.0),
    ]))
    env.set_g_optimizer(wrapper)
    env.set_d_optimizer(wrapper)
Example #6
0
def make_optimizer(env):
    wrapper = optimizer.OptimizerWrapper()
    wrapper.set_base_optimizer(optimizer.base.AdamOptimizer(get_env('trainer.learning_rate'), beta1=0.75, beta2=0.5))
    wrapper.append_grad_modifier(optimizer.grad_modifier.LearningRateMultiplier([
        ('*/b', 2.0),
    ]))
    # wrapper.append_grad_modifier(optimizer.grad_modifier.WeightDecay([
    #     ('*/W', 0.0005)
    # ]))
    env.set_optimizer(wrapper)
def make_optimizer(env):
    lr = optimizer.base.make_optimizer_variable('learning_rate', get_env('trainer.learning_rate'))

    wrapper = optimizer.OptimizerWrapper()
    wrapper.set_base_optimizer(optimizer.base.AdamOptimizer(lr, epsilon=1e-3))
    wrapper.append_grad_modifier(optimizer.grad_modifier.LearningRateMultiplier([
        ('*/b', 2.0),
    ]))
    wrapper.append_grad_modifier(optimizer.grad_modifier.GlobalGradClipByAvgNorm(0.1))
    env.set_optimizer(wrapper)
def make_optimizer(env):
    lr = optimizer.base.make_optimizer_variable(
        'learning_rate', get_env('trainer.learning_rate'))

    wrapper = optimizer.OptimizerWrapper()
    wrapper.set_base_optimizer(
        optimizer.base.RMSPropOptimizer(lr, epsilon=1e-3))
    wrapper.append_grad_modifier(
        optimizer.grad_modifier.LearningRateMultiplier([
            ('*/b', 2.0),
        ]))
    wrapper.append_grad_modifier(
        optimizer.grad_modifier.WeightDecay([
            ('*/W', 5e-4),
        ]))
    env.set_optimizer(wrapper)
Example #9
0
def make_optimizer(env):
    opt = rl.train.TRPOOptimizer(env,
                                 max_kl=get_env('trpo.max_kl'),
                                 cg_damping=get_env('trpo.cg.damping'))
    env.set_policy_optimizer(opt)

    use_linear_vr = get_env('trpo.use_linear_vr')
    if not use_linear_vr:
        wrapper = optimizer.OptimizerWrapper()
        wrapper.set_base_optimizer(
            optimizer.base.AdamOptimizer(
                get_env('trainer.value_learning_rate'), epsilon=1e-3))
        wrapper.append_grad_modifier(
            optimizer.grad_modifier.LearningRateMultiplier([
                ('*/b', 2.0),
            ]))
        env.set_value_optimizer(wrapper)
Example #10
0
def main():
    from tartist.plugins.trainer_enhancer import snapshot

    img = image.imread(args.image_path)
    smg = image.imread(args.style_path)
    h, w = img.shape[0:2]

    env = Env(master_dev=args.device)
    with env.as_default():
        make_network(env)

        func = env.make_func()
        func.compile(env.network.outputs)
    
        env.initialize_all_variables()
        snapshot.load_weights_file(env, args.weight_path)
    res_img = func(img=img[np.newaxis])
    res_smg = func(img=smg[np.newaxis])
    
    # create a new env for train
    env = SimpleTrainerEnv(master_dev=args.device)
    with env.as_default():
        make_network(env, h, w)

    net = env.network
    netin = net.outputs['img']

    with env.as_default():
        outputs = net.outputs
        loss_content = 0.
        for i in get_env('neural_style.content_layers'):
            loss_content += i[1] * neural_style_opr.get_content_loss(res_img[i[0]], outputs[i[0]])
        loss_style = 0.
        for i in get_env('neural_style.style_layers'):
            loss_style += i[1] * neural_style_opr.get_style_loss(res_smg[i[0]], outputs[i[0]])
        loss = loss_content + loss_style * get_env('neural_style.style_strenth')
        net.set_loss(loss)

    wrapper = optimizer.OptimizerWrapper()
    wrapper.set_base_optimizer(optimizer.base.AdamOptimizer(get_env('neural_style.learning_rate')))
    wrapper.append_grad_modifier(optimizer.grad_modifier.LearningRateMultiplier([
        ('img', 1.0),
        ('*', 0.0),
    ]))
    env.set_optimizer(wrapper)

    func = env.make_optimizable_func()
    func.compile({'loss': net.loss})

    env.initialize_all_variables()
    snapshot.load_weights_file(env, args.weight_path)

    noise_img = np.random.uniform(-20, 20, (h, w, 3)).astype('float32')
    image_mean = get_env('neural_style.image_mean')
    image_noise_ratio = get_env('neural_style.image_noise_ratio')
    jmg = (1 - image_noise_ratio) * (img - image_mean) + image_noise_ratio * noise_img + image_mean
    netin.set_value(jmg[np.newaxis])

    io.makedir(args.output_path)

    for i in range(args.nr_iters + 1):
        if i != 0:
            r = func()
            logger.info('iter {}: loss = {}'.format(i, float(r['loss'])))

        if i % args.save_step == 0:
            output = netin.get_value()[0]

            output_path = os.path.join(args.output_path, 'iter_{:04d}.jpg'.format(i))
            image.imwrite(output_path, output)
            logger.critical('Output written: {}'.format(output_path))