Exemple #1
0
    def test_data(self):
        dataset = ActionEncoderDataset(
            config.datapath('SpaceInvaders-v4/latent'))
        devset = data_utils.Subset(dataset, range(1))
        dev = data_utils.DataLoader(devset,
                                    batch_size=1,
                                    collate_fn=collate_action_observation)

        for raw_latent, first_frame, delta_latent, action_minibatch in dev:
            assert raw_latent[0][0, 0,
                                 0] - first_frame[0][0, 0,
                                                     0] == delta_latent[0][0,
                                                                           0,
                                                                           0]

            ds = data.DeltaStream(first_frame[0])
            zero_delta = torch.zeros(first_frame[0].shape)
            assert ds.delta_to_frame(zero_delta).sum() == first_frame[0].sum()

            for i, delta in enumerate(delta_latent[0]):

                from_delta = ds.delta_to_frame(
                    delta_latent[0][i, :, :])[0, 0, 0].item()
                original = raw_latent[0][i, 0, 0].item()
                print('test ' + str(i))
                if from_delta != original:
                    print('delta %.15f' % delta_latent[0][i, 0, 0].item())
                    print('frame from delta %.15f' % from_delta)
                    print('original %.15f' % original)
                import math
                assert math.isclose(from_delta,
                                    original,
                                    rel_tol=1e-09,
                                    abs_tol=1e-05)
Exemple #2
0
from torch.optim import Adam

if __name__ == '__main__':

    input_viewer = ImageViewer('input', (320, 480))
    output_viewer = ImageViewer('output', (320, 480))
    latent_viewer = ImageViewer('latent', (320, 480))
    latent_instr = LatentInstrument()

    invader = tf.ColorMask(lower=[120, 125, 30],
                           upper=[140, 140, 130],
                           append=False)
    cut_invader = tf.SetRange(0, 30, 0, 210, [0])

    co_ord_conv_shots = GymImageDataset(
        directory=config.datapath(r'SpaceInvaders-v4\images\raw_v1\all'),
        input_transform=TVT.Compose(
            [invader, cut_invader,
             TVT.ToTensor(),
             tf.CoordConv()]),
        target_transform=TVT.Compose([invader, cut_invader,
                                      TVT.ToTensor()]))

    co_ord_conv_data_package = DataPackage(co_ord_conv_shots, StandardSelect())

    run_fac = SimpleRunFac()
    compressor = Params(Compressor, (210, 160),
                        1,
                        input_channels=3,
                        output_channels=1)
Exemple #3
0
    return batch


if __name__ == '__main__':

    batch_size = 128
    i_size = 16 + 6
    z_size = 16
    train_model = True
    config.increment('run_id')
    clamp = False

    device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')

    dataset = ActionEncoderDataset(
        config.datapath('SpaceInvaders-v4/rl_raw_v2'),
        load_observation=False,
        load_screen=False)
    dataset = RandomSubSequence(dataset, 100)

    dev = data_utils.Subset(dataset, range(len(dataset) * 2 // 10))
    train = data_utils.Subset(dataset, range(0, len(dataset) * 9 // 10))
    test = data_utils.Subset(dataset,
                             range(len(dataset) * 9 // 10 + 1, len(dataset)))

    dev = data_utils.DataLoader(
        dev,
        batch_size=batch_size,
        collate_fn=collate_action_observation,
        drop_last=False,
    )
        decode_viewer.update(image)
        decode2_viewer.update(image)


    shots = tf.ColorMask(lower=[128, 128, 128], upper=[255, 255, 255], append=True)
    player = tf.ColorMask(lower=[30, 100, 40], upper=[70, 180, 70], append=True)
    cut_player = tf.SetRange(0, 60, 0, 210, [4])
    invader = tf.ColorMask(lower=[120, 125, 30], upper=[140, 140, 130], append=True)
    cut_invader = tf.SetRange(0, 30, 0, 210, [5])
    barrier = tf.ColorMask(lower=[120, 74, 30], upper=[190, 100, 70], append=True)
    select = tf.SelectChannels([3, 4, 5, 6])

    segmentor = TVT.Compose([shots, player, cut_player, invader, cut_invader,
                             barrier, select, TVT.ToTensor(), tf.CoordConv()])

    co_ord_conv_shots = GymImageDataset(directory=config.datapath(r'SpaceInvaders-v4\images\raw_v1\all'),
                                        input_transform=segmentor,
                                        target_transform=segmentor)

    co_ord_conv_data_package = DataPackage(co_ord_conv_shots, StandardSelect())

    channel_coder = Params(MultiChannelAE)
    opt = Params(Adam, lr=1e-3)

    run_fac = SimpleRunFac(increment_run=False)
    run_fac.run_list.append(Run(channel_coder, None, None, co_ord_conv_data_package,
                                run_name='shots_v1', trainer=SimpleInference()))

    #run_fac = SimpleRunFac.resume(r'C:\data\runs\549', co_ord_conv_data_package)
    batch_size = 1
    epochs = 30