def load_model(prefix, model_id, net_params, *args, **kwargs):
    params = load_param((util.get_dir(prefix), model_id))
    model = ModelFocusCNN(
        image_shape=(84, 84),
        net_params=net_params,
        *args,
        **kwargs,
    )
    model.set_parameters(params)

    return model
示例#2
0
def load_model(model_path, net_params_path, pmodel=None, *args, **kwargs):
    net_params = json.loads(open(net_params_path).read())
    params = load_param(model_path)
    test_mode = ModelFocusCNN(
        image_shape=(84, 84),
        net_params=net_params,
        *args,
        **kwargs,
    )
    test_mode.set_parameters(params)

    # construct model
    model = ModelCollectionDAG()
    if pmodel:
        model.add_model('premise', pmodel, [])
        model.add_model('test_model', test_mode, ['premise'])
    else:
        model.add_model('test_model', test_mode, [])
    model.set_trainable('test_model')
    return model
    binarize = 0.01
    GAME_NAME = 'atari'
    dataset = parse_dataset(dataset_name=GAME_NAME,
                            n_state=n_state,
                            binarize=binarize,
                            offset_fix=offset_fix)

    # get ball model
    prev_net_params_path_1 = 'ObjectRecognition/net_params/attn_softmax.json'
    prev_weight_path_1 = 'results/cmaes_soln/focus_atari_breakout/paddle_bin_smooth.pth'
    prev_net_params_1 = json.loads(open(prev_net_params_path_1).read())
    prev_model_1 = ModelFocusCNN(
        image_shape=(84, 84),
        net_params=prev_net_params_1,
    )
    prev_model_1.set_parameters(load_param(prev_weight_path_1))
    prev_net_params_path_2 = 'ObjectRecognition/net_params/attn_softmax.json'
    prev_weight_path_2 = 'results/cmaes_soln/focus_atari_breakout/42531_2_smooth_2.pth'
    prev_net_params_2 = json.loads(open(prev_net_params_path_2).read())
    prev_model_2 = ModelFocusCNN(
        image_shape=(84, 84),
        net_params=prev_net_params_2,
    )
    prev_model_2.set_parameters(load_param(prev_weight_path_2))
    prev_model = ModelCollectionDAG()
    prev_model.add_model('model_1',
                         prev_model_1, [],
                         augment_fn=partial(util.remove_mean_batch,
                                            nb_size=(3, 8)))
    # prev_model.add_model('model_2', prev_model_2, ['model_1'])
    f1 = util.LowIntensityFiltering(5.0)
    # Action->Gripper: python add_edge.py --env SelfPusher --true-environment --model-form basic --optimizer-form DQN --record-rollouts "data/pusherrandom/" --changepoint-dir data/fullpusher/ --train-edge "Action->Gripper" --num-stack 2 --train --num-iters 500 --save-dir data/pusheraction --state-forms bounds --state-names Gripper --frameskip 3 --init-form smalluni --save-models --save-graph data/fullpusher/Action-\>Gripper/ > ./pusher/action_gripper.txt
    # Gripper->Block (touch): python add_edge.py --model-form vector --optimizer-form PPO --record-rollouts "data/extragripper/" --train-edge "Gripper->Block" --num-stack 1 --train --num-iters 1000 --state-forms prox bounds bounds --state-names Gripper Block Block --env SelfPusher --true-environment --base-node Action --changepoint-dir ./data/pushergraph/ --lr 7e-5 --behavior-policy esp --gamma .99 --init-form xnorm --num-layers 1 --reward-check 128 --changepoint-queue-len 128 --greedy-epsilon .001 --log-interval 10 --num-steps 1 --frameskip 3 --factor 16 --key-dim 2048 --num-grad-states 32 --return-form value --grad-epoch 8 --acti sin --save-dir ../datasets/caleb_data/blockvec --save-graph data/blockvec --save-models > blockvec.txt
    # Pusher Baseline: python add_edge.py --model-form vector --optimizer-form PPO --record-rollouts "data/gripperdir/" --train-edge "Action->Reward" --num-stack 1 --train --num-iters 100000 --state-forms bounds bounds bounds prox prox --state-names Gripper Block Target Gripper__Block Block__Target --changepoint-dir ./data/rawgraph/ --true-environment --reward-form rawdist --lr 7e-4 --greedy-epsilon 0 --value-loss-coef 0.5 --init-form orth --behavior-policy esp --gamma .99 --num-layers 1 --reward-check 128 --changepoint-queue-len 128 --greedy-epsilon .001 --log-interval 10 --num-steps 1 --frameskip 3 --factor 16 --key-dim 2048 --num-grad-states 32 --return-form value --env SelfPusher --grad-epoch 8 --acti tanh --gpu 2 --frameskip 2 --normalize > pusherppo.txt
    args = get_args()
    torch.cuda.set_device(args.gpu)

    # loading vision model
    paddle_model_net_params_path = 'ObjectRecognition/net_params/attn_base.json'
    # paddle_model_net_params_path = 'ObjectRecognition/net_params/attn_softmax.json'
    net_params = json.loads(open(paddle_model_net_params_path).read())
    params = load_param('results/cmaes_soln/focus_self/paddle.pth')
    # params = load_param('ObjectRecognition/models/atari/paddle_bin_smooth.pth')
    paddle_model = ModelFocusCNN(image_shape=(84, 84),
                                 net_params=net_params,
                                 binarize=0.000)
    paddle_model.set_parameters(params)
    # ball_model_net_params_path = 'ObjectRecognition/net_params/attn_base.json'
    ball_model_net_params_path = 'ObjectRecognition/net_params/attn_softmax.json'
    net_params = json.loads(open(ball_model_net_params_path).read())
    params = load_param('results/cmaes_soln/focus_self/ball.pth')
    # params = load_param('ObjectRecognition/models/atari/42531_2_smooth_3_2.pth')
    ball_model = ModelFocusCNN(image_shape=(84, 84),
                               net_params=net_params,
                               binarize=0.0)
    ball_model.set_parameters(params)
    model = ModelCollectionDAG()
    model.add_model('Paddle',
                    paddle_model, [],
                    augment_fn=util.RemoveMeanMemory(nb_size=(8, 8)))
    f1 = util.LowIntensityFiltering(6.0)
    f2 = util.JumpFiltering(3, 0.05)
示例#5
0
            image_shape=dataset.frame_shape,
            net_params=net_params,
        )
    logger.info('loaded net_params %s' % (str(net_params)))

    # boosting with trained models
    if args.boost:
        # a model to be boosted
        b_net_params_path, b_weight_path = args.boost
        b_net_params = json.loads(open(b_net_params_path).read())
        b_params = load_param(b_weight_path)
        b_model = ModelFocusCNN(
            image_shape=(84, 84),
            net_params=b_net_params,
        )
        b_model.set_parameters(b_params)

        # boosting ensemble
        train_model = ModelFocusBoost(
            b_model,
            train_model,
            train_flags=[False, True],
            cp_detector=cpd,
        )

    # paddle model for premise MICP loss
    if args.premise_micp or args.attn_premise_micp:
        pmodel_weight_path = args.premise_path
        pmodel_net_params_text = open(args.premise_net).read()
        pmodel_net_params = json.loads(pmodel_net_params_text)
        pmodel_params = load_param(pmodel_weight_path)
    save_path = util.get_dir(os.path.join(prefix, 'focus_img_%s'%model_id))
    if plot_flags['plot_filter']:
        plot_model_filter(r_model, save_path)

    # boosting with trained models
    if args.boost:
        # partial ball model to be boosted
        ball_model_id = 'results/cmaes_soln/focus_atari_breakout/42080_16.npy'
        ball_net_params_text = open('objRecog/net_params/two_layer.json').read()
        ball_net_params = json.loads(ball_net_params_text)
        ball_params = load_param(ball_model_id)
        ball_model = ModelFocusCNN(
            image_shape=(84, 84),
            net_params=ball_net_params,
        )
        ball_model.set_parameters(ball_params)

        # boosting ensemble
        r_model = ModelFocusBoost(
            ball_model,
            r_model,
            train_flags=[False, True],
            cp_detector=cpd,
        )
    model = ModelCollectionDAG()
    if args.premise_path:
        pmodel_weight_path = args.premise_path
        pmodel_net_params_text = open(args.premise_net).read()
        pmodel_net_params = json.loads(pmodel_net_params_text)
        pmodel_params = load_param(pmodel_weight_path)
        pmodel = ModelFocusCNN(
示例#7
0
import numpy as np
import torch
from ObjectRecognition.model import ModelFocusCNN

net_params = {
    'filter': 2,
    'channel': [3, 1],
    'kernel_size': [3, 5],
    'stride': [1, 1],
    'padding': [2, 4],
    'activation_fn': ['ReLU', 'Tanh']
}
model = ModelFocusCNN((84, 84), net_params=net_params)

# forward
out = model.forward(torch.zeros([100, 1, 84, 84]))
print(out, out.shape)

# parameters
print(model.count_parameters())
ones = np.arange(model.count_parameters())
model.set_parameters(ones)
print(list(model.parameters()))
示例#8
0
    game,
    mi_match_coeff=1.0,
    mi_diffs_coeff=0.2,
    verbose=True,
)
# micplosses.append(action_micploss)

# premise loss
pmodel_net_params_path = 'ObjectRecognition/net_params/two_layer_5_5.json'
net_params = json.loads(open(pmodel_net_params_path).read())
params = load_param('results/cmaes_soln/focus_self/paddle_bin_long.npy')
pmodel = ModelFocusCNN(
    image_shape=(84, 84),
    net_params=net_params,
)
pmodel.set_parameters(params)
paddle_model = load_model('results/cmaes_soln/focus_self/paddle_bin.npy',
                          'ObjectRecognition/net_params/two_layer.json',
                          pmodel=pmodel)
ball_model = load_model('results/cmaes_soln/focus_self/ball_bin.npy',
                        'ObjectRecognition/net_params/two_layer.json',
                        pmodel=pmodel)
comp_model = load_model('results/cmaes_soln/focus_self/42068_40.npy',
                        'ObjectRecognition/net_params/two_layer.json',
                        pmodel=pmodel)

premise_micploss = PremiseMICPLoss(
    game,
    'premise',
    mi_match_coeff=0.0,
    mi_diffs_coeff=0.0,