def __init__(
        self,
        validation_combinations=(('square', 'red',
                                  'solid'), ('triangle', 'green', 'solid'),
                                 ('circle', 'blue', 'solid')),
        test_combinations=(('rectangle', 'yellow', 'solid'),
                           ('cross', 'magenta', 'solid'), ('ellipse', 'cyan',
                                                           'solid')),
        caption_size=6,
        vocabulary=('.', 'a', 'an', 'blue', 'circle', 'cross', 'cyan',
                    'ellipse', 'gray', 'green', 'is', 'magenta', 'pentagon',
                    'rectangle', 'red', 'semicircle', 'shape', 'square',
                    'there', 'triangle', 'yellow'),
        language=None,
        number_texts=10,
    ):

        world_generator = RandomAttributesGenerator(
            entity_counts=[1],
            validation_combinations=validation_combinations,
            test_combinations=test_combinations,
            max_provoke_collision_rate=0.0,
            collision_tolerance=0.0,
            boundary_tolerance=0.0)
        world_generator.world_size = 128

        world_captioner = RegularTypeCaptioner(existing_attribute_rate=0.0)

        super(OneshapeSimpleTextselect,
              self).__init__(world_generator=world_generator,
                             world_captioner=world_captioner,
                             caption_size=caption_size,
                             vocabulary=vocabulary,
                             language=language,
                             number_texts=number_texts)
Exemplo n.º 2
0
    def __init__(
        self,
        entity_counts=(2, 3, 4, 5, 6, 7, 8),
        train_entity_counts=(2, 3, 4, 5, 7),
        validation_entity_counts=(6,),
        test_entity_counts=(8,),
        validation_combinations=(('square', 'red', 'solid'), ('triangle', 'green', 'solid'), ('circle', 'blue', 'solid')),
        test_combinations=(('rectangle', 'yellow', 'solid'), ('cross', 'magenta', 'solid'), ('ellipse', 'cyan', 'solid')),
        caption_size=6,
        vocabulary=('.', 'a', 'an', 'blue', 'circle', 'cross', 'cyan', 'ellipse', 'gray', 'green', 'is', 'magenta', 'pentagon', 'rectangle', 'red', 'semicircle', 'shape', 'square', 'there', 'triangle', 'yellow'),
        language=None
    ):

        world_generator = RandomAttributesGenerator(
            entity_counts=entity_counts,
            train_entity_counts=train_entity_counts,
            validation_entity_counts=validation_entity_counts,
            test_entity_counts=test_entity_counts,
            validation_combinations=validation_combinations,
            test_combinations=test_combinations,
            max_provoke_collision_rate=0.0,
            collision_tolerance=0.0,
            boundary_tolerance=0.0
        )

        world_captioner = RegularTypeCaptioner()

        super(MultishapeSimple, self).__init__(
            world_generator=world_generator,
            world_captioner=world_captioner,
            caption_size=caption_size,
            vocabulary=vocabulary,
            language=language
        )
Exemplo n.º 3
0
    def __init__(self,
                 world_size=64,
                 entity_counts=(5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15),
                 train_entity_counts=(5, 6, 7, 8, 9, 10, 11, 12, 14),
                 validation_entity_counts=(13, ),
                 test_entity_counts=(15, ),
                 max_provoke_collision_rate=0.33,
                 collision_tolerance=0.2,
                 boundary_tolerance=0.2,
                 pixel_noise_stddev=0.0):

        world_generator = RandomAttributesGenerator(
            entity_counts=entity_counts,
            world_size=world_size,
            train_entity_counts=train_entity_counts,
            validation_entity_counts=validation_entity_counts,
            test_entity_counts=test_entity_counts,
            max_provoke_collision_rate=max_provoke_collision_rate,
            collision_tolerance=collision_tolerance,
            boundary_tolerance=boundary_tolerance)

        num_classes = len(world_generator.shapes) * len(
            world_generator.colors) * len(world_generator.textures)

        super(Multishape, self).__init__(world_generator=world_generator,
                                         num_classes=num_classes,
                                         multi_class=True,
                                         class_count=False,
                                         pixel_noise_stddev=pixel_noise_stddev)
Exemplo n.º 4
0
    def __init__(self,
                 entity_counts=(2, 3, 4, 5, 6, 7, 8),
                 train_entity_counts=(2, 3, 4, 5, 7),
                 validation_entity_counts=(6, ),
                 test_entity_counts=(8, ),
                 validation_combinations=(('square', 'red', 'solid'),
                                          ('triangle', 'green', 'solid'),
                                          ('circle', 'blue', 'solid')),
                 test_combinations=(('rectangle', 'yellow',
                                     'solid'), ('cross', 'magenta', 'solid'),
                                    ('ellipse', 'cyan', 'solid')),
                 caption_size=8,
                 vocabulary=('.', 'a', 'an', 'blue', 'circle', 'cross', 'cyan',
                             'ellipse', 'gray', 'green', 'is', 'magenta',
                             'pentagon', 'rectangle', 'red', 'semicircle',
                             'shape', 'square', 'there', 'triangle', 'yellow'),
                 language=None,
                 number_texts=10):

        world_generator = RandomAttributesGenerator(
            entity_counts=entity_counts,
            train_entity_counts=train_entity_counts,
            validation_entity_counts=validation_entity_counts,
            test_entity_counts=test_entity_counts,
            validation_combinations=validation_combinations,
            test_combinations=test_combinations)
        world_generator.world_size = 128

        world_captioner = CaptionerMixer(captioners=(
            RegularTypeCaptioner(),
            ExistentialCaptioner(restrictor_captioner=RegularTypeCaptioner(
                hypernym_rate=1.0, logical_tautology_rate=1.0),
                                 body_captioner=AttributeTypeRelationCaptioner(
                                     attribute_type_captioner=CaptionerMixer(
                                         captioners=(
                                             RegularAttributeCaptioner(),
                                             RegularTypeCaptioner()))))))

        super(MultishapeTextselect,
              self).__init__(world_generator=world_generator,
                             world_captioner=world_captioner,
                             caption_size=caption_size,
                             vocabulary=vocabulary,
                             language=language,
                             number_texts=number_texts)
Exemplo n.º 5
0
    def __init__(self,
                 world_size=64,
                 world_color='black',
                 shapes=('square', 'rectangle', 'triangle', 'pentagon',
                         'cross', 'circle', 'semicircle', 'ellipse'),
                 colors=('red', 'green', 'blue', 'yellow', 'magenta', 'cyan',
                         'gray'),
                 textures=('solid', ),
                 rotation=True,
                 size_range=(0.1, 0.25),
                 distortion_range=(2.0, 3.0),
                 shade_range=0.4,
                 collision_tolerance=0.25,
                 collision_shade_difference=0.5,
                 boundary_tolerance=None,
                 entity_counts=(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
                                15),
                 train_entity_counts=None,
                 validation_entity_counts=None,
                 validation_count_rate=0.5,
                 test_entity_counts=None,
                 test_count_rate=0.5,
                 max_provoke_collision_rate=0.33,
                 multi_class=True,
                 count_class=False,
                 pixel_noise_stddev=0.0):

        world_generator = RandomAttributesGenerator(
            world_size=world_size,
            world_color=world_color,
            shapes=shapes,
            colors=colors,
            textures=textures,
            rotation=rotation,
            size_range=size_range,
            distortion_range=distortion_range,
            shade_range=shade_range,
            collision_tolerance=collision_tolerance,
            collision_shade_difference=collision_shade_difference,
            boundary_tolerance=boundary_tolerance,
            entity_counts=entity_counts,
            train_entity_counts=train_entity_counts,
            validation_entity_counts=validation_entity_counts,
            validation_count_rate=validation_count_rate,
            test_entity_counts=test_entity_counts,
            test_count_rate=test_count_rate,
            max_provoke_collision_rate=max_provoke_collision_rate)

        num_classes = len(world_generator.shapes) * len(
            world_generator.colors) * len(world_generator.textures)

        super(ShapeDataset,
              self).__init__(world_generator=world_generator,
                             num_classes=num_classes,
                             multi_class=multi_class,
                             count_class=count_class,
                             pixel_noise_stddev=pixel_noise_stddev)
Exemplo n.º 6
0
    def __init__(self):

        world_generator = RandomAttributesGenerator(entity_counts=[1])

        num_classes = len(world_generator.shapes) * len(
            world_generator.colors) * len(world_generator.textures)

        super(Oneshape, self).__init__(world_generator=world_generator,
                                       num_classes=num_classes)
Exemplo n.º 7
0
    def __init__(self,
                 world_size=64,
                 boundary_tolerance=0.2,
                 pixel_noise_stddev=0.0):

        world_generator = RandomAttributesGenerator(
            entity_counts=[1],
            world_size=world_size,
            boundary_tolerance=boundary_tolerance)

        num_classes = len(world_generator.shapes) * len(
            world_generator.colors) * len(world_generator.textures)

        super(Oneshape, self).__init__(world_generator=world_generator,
                                       num_classes=num_classes,
                                       pixel_noise_stddev=pixel_noise_stddev)
Exemplo n.º 8
0
    def __init__(self,
                 entity_counts=(5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15),
                 train_entity_counts=(5, 6, 7, 8, 9, 10, 11, 12, 14),
                 validation_entity_counts=(13, ),
                 test_entity_counts=(15, )):

        world_generator = RandomAttributesGenerator(
            entity_counts=entity_counts,
            train_entity_counts=train_entity_counts,
            validation_entity_counts=validation_entity_counts,
            test_entity_counts=test_entity_counts)

        num_classes = len(world_generator.shapes) * len(
            world_generator.colors) * len(world_generator.textures)

        super(Multishape, self).__init__(world_generator=world_generator,
                                         num_classes=num_classes,
                                         multi_class=True,
                                         class_count=False)
Exemplo n.º 9
0
    def __init__(self,
                 entity_counts=(5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15),
                 train_entity_counts=(5, 6, 7, 8, 9, 10, 11, 12, 14),
                 validation_entity_counts=(13, ),
                 test_entity_counts=(15, ),
                 validation_combinations=(('square', 'red', 'solid'),
                                          ('triangle', 'green', 'solid'),
                                          ('circle', 'blue', 'solid')),
                 test_combinations=(('rectangle', 'yellow',
                                     'solid'), ('cross', 'magenta', 'solid'),
                                    ('ellipse', 'cyan', 'solid')),
                 caption_size=14,
                 vocabulary=('.', 'a', 'above', 'an', 'behind', 'below',
                             'blue', 'circle', 'closer', 'closest', 'cross',
                             'cyan', 'ellipse', 'farther', 'farthest', 'from',
                             'front', 'gray', 'green', 'in', 'is', 'left',
                             'magenta', 'of', 'pentagon', 'rectangle', 'red',
                             'right', 'semicircle', 'shape', 'square', 'than',
                             'the', 'to', 'triangle', 'yellow'),
                 language=None):

        world_generator = RandomAttributesGenerator(
            entity_counts=entity_counts,
            train_entity_counts=train_entity_counts,
            validation_entity_counts=validation_entity_counts,
            test_entity_counts=test_entity_counts,
            validation_combinations=validation_combinations,
            test_combinations=test_combinations)

        world_captioner = ExistentialCaptioner(
            restrictor_captioner=RegularTypeCaptioner(),
            body_captioner=RelationCaptioner(
                reference_captioner=RegularTypeCaptioner(),
                comparison_captioner=RegularTypeCaptioner(),
                relations=('x-rel', 'y-rel', 'z-rel', 'proximity-rel')))

        super(Spatial, self).__init__(world_generator=world_generator,
                                      world_captioner=world_captioner,
                                      caption_size=caption_size,
                                      vocabulary=vocabulary,
                                      language=language)
Exemplo n.º 10
0
    def __init__(self,
                 validation_combinations=(('square', 'red', 'solid'),
                                          ('triangle', 'green', 'solid'),
                                          ('circle', 'blue', 'solid')),
                 test_combinations=(('rectangle', 'yellow',
                                     'solid'), ('cross', 'magenta', 'solid'),
                                    ('ellipse', 'cyan', 'solid')),
                 caption_size=9,
                 vocabulary=('.', 'a', 'an', 'angular', 'asymmetric', 'blue',
                             'circle', 'cross', 'cyan', 'ellipse', 'gray',
                             'green', 'is', 'magenta', 'pentagon', 'rectangle',
                             'red', 'round', 'semicircle', 'shape', 'square',
                             'symmetric', 'there', 'triangle', 'yellow'),
                 language=None):

        world_generator = RandomAttributesGenerator(
            entity_counts=[1],
            validation_combinations=validation_combinations,
            test_combinations=test_combinations)

        world_captioner = CaptionerMixer(captioners=(
            RegularTypeCaptioner(existing_attribute_rate=0.0),
            ExistentialCaptioner(
                restrictor_captioner=RegularTypeCaptioner(
                    hypernym_rate=1.0,
                    existing_attribute_rate=0.0,
                    logical_tautology_rate=1.0),
                body_captioner=AttributeTypeRelationCaptioner(
                    attribute_type_captioner=CaptionerMixer(captioners=(
                        RegularAttributeCaptioner(existing_attribute_rate=0.0),
                        RegularTypeCaptioner(existing_attribute_rate=0.0)))),
                pragmatical_tautology_rate=1.0)))

        super(Oneshape, self).__init__(world_generator=world_generator,
                                       world_captioner=world_captioner,
                                       caption_size=caption_size,
                                       vocabulary=vocabulary,
                                       language=language)
Exemplo n.º 11
0
    def __init__(
        self,
        validation_combinations=(('square', 'red', 'solid'), ('triangle', 'green', 'solid'), ('circle', 'blue', 'solid')),
        test_combinations=(('rectangle', 'yellow', 'solid'), ('cross', 'magenta', 'solid'), ('ellipse', 'cyan', 'solid')),
        caption_size=12,
        vocabulary=('.', 'a', 'above', 'an', 'below', 'blue', 'circle', 'cross', 'cyan', 'ellipse', 'gray', 'green', 'is', 'left', 'magenta', 'of', 'pentagon', 'rectangle', 'red', 'right', 'semicircle', 'shape', 'square', 'the', 'to', 'triangle', 'yellow'),
        language=None
    ):

        world_generator = RandomAttributesGenerator(
            entity_counts=[2],
            validation_combinations=validation_combinations,
            test_combinations=test_combinations,
            max_provoke_collision_rate=0.0,
            collision_tolerance=0.0,
            boundary_tolerance=0.0
        )

        world_captioner = ExistentialCaptioner(
            restrictor_captioner=RegularTypeCaptioner(
            ),
            body_captioner=RelationCaptioner(
                reference_captioner=RegularTypeCaptioner(),
                comparison_captioner=RegularTypeCaptioner(),
                relations=('x-rel', 'y-rel')
            ),
            pragmatical_tautology_rate=1.0
        )

        super(SpatialSimple, self).__init__(
            world_generator=world_generator,
            world_captioner=world_captioner,
            caption_size=caption_size,
            vocabulary=vocabulary,
            language=language
        )
    def __init__(
        self,
        world_size=64,
        world_colors=('black',),
        shapes=('square', 'rectangle', 'triangle', 'pentagon', 'cross', 'circle', 'semicircle', 'ellipse'),
        colors=('red', 'green', 'blue', 'yellow', 'magenta', 'cyan', 'gray'),
        textures=('solid',),
        rotation=True,
        size_range=(0.1, 0.25),
        distortion_range=(2.0, 3.0),
        shade_range=0.4,
        collision_tolerance=0.25,
        collision_shade_difference=0.5,
        boundary_tolerance=None,
        entity_counts=(3, 4, 5, 6, 7, 8, 9, 10),
        train_entity_counts=None,
        validation_entity_counts=None,
        test_entity_counts=None,
        validation_count_rate=0.5,
        test_count_rate=0.5,
        validation_combinations=None,
        test_combinations=None,
        validation_space_rate_range=(0.0, 1.0),
        test_space_rate_range=(0.0, 1.0),
        validation_combination_rate=0.5,
        test_combination_rate=0.5,
        max_provoke_collision_rate=0.33,
        relations=('x-rel', 'y-rel', 'z-rel'),
        negation=True,
        existential_incorrect_distribution=(1, 1),
        relation_incorrect_distribution=(2, 1, 1),
        type_single_attribute='shape',
        type_existing_attribute_rate=1.0,
        caption_size=15,
        vocabulary=('.', 'a', 'above', 'an', 'as', 'behind', 'below', 'besides', 'bigger', 'blue', 'circle', 'closer', 'color', 'cross', 'cyan', 'darker', 'different', 'does', 'ellipse', 'exist', 'exists', 'farther', 'from', 'front', 'gray', 'green', 'in', 'is', 'left', 'lighter', 'magenta', 'not', 'of', 'pentagon', 'rectangle', 'red', 'right', 'same', 'semicircle', 'shape', 'smaller', 'square', 'than', 'the', 'to', 'triangle', 'yellow'),
        correct_ratio=0.5,
        train_correct_ratio=None,
        validation_correct_ratio=None,
        test_correct_ratio=None,
        worlds_per_instance=1,
        captions_per_instance=1,
        pixel_noise_stddev=None,
        caption_realizer='dmrs',
        language=None
    ):

        world_generator = RandomAttributesGenerator(
            world_size=world_size,
            world_colors=world_colors,
            shapes=shapes,
            colors=colors,
            textures=textures,
            rotation=rotation,
            size_range=size_range,
            distortion_range=distortion_range,
            shade_range=shade_range,
            collision_tolerance=collision_tolerance,
            collision_shade_difference=collision_shade_difference,
            boundary_tolerance=boundary_tolerance,
            entity_counts=entity_counts,
            train_entity_counts=train_entity_counts,
            validation_entity_counts=validation_entity_counts,
            validation_count_rate=validation_count_rate,
            test_entity_counts=test_entity_counts,
            test_count_rate=test_count_rate,
            validation_combinations=validation_combinations,
            validation_space_rate_range=validation_space_rate_range,
            validation_combination_rate=validation_combination_rate,
            test_combinations=test_combinations,
            test_space_rate_range=test_space_rate_range,
            test_combination_rate=test_combination_rate,
            max_provoke_collision_rate=max_provoke_collision_rate
        )

        relation_captioner = RelationCaptioner(
            reference_captioner=SingleAttributeTypeCaptioner(
                attribute=type_single_attribute,
                existing_attribute_rate=type_existing_attribute_rate
            ),
            relations=relations,
            incorrect_distribution=relation_incorrect_distribution,
            comparison_captioner=UniqueTypeCaptioner()
        )
        if negation:
            relation_captioner = NegationRelationCaptioner(
                relation_captioner=relation_captioner
            )

        world_captioner = ExistentialCaptioner(
            restrictor_captioner=SingleAttributeTypeCaptioner(
                attribute=type_single_attribute,
                existing_attribute_rate=type_existing_attribute_rate
            ),
            body_captioner=relation_captioner,
            incorrect_distribution=existential_incorrect_distribution
        )

        super(RelationalSingleAttributeDataset, self).__init__(
            world_generator=world_generator,
            world_captioner=world_captioner,
            caption_size=caption_size,
            vocabulary=vocabulary,
            correct_ratio=correct_ratio,
            train_correct_ratio=train_correct_ratio,
            validation_correct_ratio=validation_correct_ratio,
            test_correct_ratio=test_correct_ratio,
            worlds_per_instance=worlds_per_instance,
            captions_per_instance=captions_per_instance,
            pixel_noise_stddev=pixel_noise_stddev,
            caption_realizer=caption_realizer,
            language=language
        )
Exemplo n.º 13
0
    def __init__(self,
                 world_size=64,
                 world_color='black',
                 shapes=('square', 'rectangle', 'triangle', 'pentagon',
                         'cross', 'circle', 'semicircle', 'ellipse'),
                 colors=('red', 'green', 'blue', 'yellow', 'magenta', 'cyan',
                         'gray'),
                 textures=('solid', ),
                 rotation=True,
                 size_range=(0.1, 0.25),
                 distortion_range=(2.0, 3.0),
                 shade_range=0.4,
                 collision_tolerance=0.25,
                 collision_shade_difference=0.5,
                 boundary_tolerance=None,
                 entity_counts=(1, 2, 3, 4, 5, 6, 7, 8, 9, 10),
                 train_entity_counts=None,
                 validation_entity_counts=None,
                 test_entity_counts=None,
                 validation_count_rate=0.5,
                 test_count_rate=0.5,
                 validation_combinations=None,
                 test_combinations=None,
                 validation_space_rate_range=(0.0, 1.0),
                 test_space_rate_range=(0.0, 1.0),
                 validation_combination_rate=0.5,
                 test_combination_rate=0.5,
                 max_provoke_collision_rate=0.33,
                 caption_size=8,
                 vocabulary=('.', 'a', 'an', 'blue', 'circle', 'cross', 'cyan',
                             'ellipse', 'gray', 'green', 'is', 'magenta',
                             'pentagon', 'rectangle', 'red', 'semicircle',
                             'shape', 'square', 'there', 'triangle', 'yellow'),
                 correct_ratio=0.5,
                 train_correct_ratio=None,
                 validation_correct_ratio=None,
                 test_correct_ratio=None,
                 worlds_per_instance=1,
                 captions_per_instance=1,
                 pixel_noise_stddev=None,
                 caption_realizer='dmrs',
                 language=None):

        world_generator = RandomAttributesGenerator(
            world_size=world_size,
            world_color=world_color,
            shapes=shapes,
            colors=colors,
            textures=textures,
            rotation=rotation,
            size_range=size_range,
            distortion_range=distortion_range,
            shade_range=shade_range,
            collision_tolerance=collision_tolerance,
            collision_shade_difference=collision_shade_difference,
            boundary_tolerance=boundary_tolerance,
            entity_counts=entity_counts,
            train_entity_counts=train_entity_counts,
            validation_entity_counts=validation_entity_counts,
            validation_count_rate=validation_count_rate,
            test_entity_counts=test_entity_counts,
            test_count_rate=test_count_rate,
            validation_combinations=validation_combinations,
            validation_space_rate_range=validation_space_rate_range,
            validation_combination_rate=validation_combination_rate,
            test_combinations=test_combinations,
            test_space_rate_range=test_space_rate_range,
            test_combination_rate=test_combination_rate,
            max_provoke_collision_rate=max_provoke_collision_rate)

        world_captioner = CaptionerMixer(
            captioners=(RegularTypeCaptioner(),
                        ExistentialCaptioner(
                            restrictor_captioner=CaptionerMixer(
                                captioners=(EmptyTypeCaptioner(),
                                            RegularTypeCaptioner(
                                                hypernym_rate=1.0))),
                            body_captioner=AttributeTypeRelationCaptioner(
                                attribute_type_captioner=CaptionerMixer(
                                    captioners=(RegularAttributeCaptioner(),
                                                RegularTypeCaptioner(
                                                    hypernym_rate=0.0)))))),
            distribution=(1, 2))

        super(ExistentialDataset,
              self).__init__(world_generator=world_generator,
                             world_captioner=world_captioner,
                             caption_size=caption_size,
                             vocabulary=vocabulary,
                             correct_ratio=correct_ratio,
                             train_correct_ratio=train_correct_ratio,
                             validation_correct_ratio=validation_correct_ratio,
                             test_correct_ratio=test_correct_ratio,
                             worlds_per_instance=worlds_per_instance,
                             captions_per_instance=captions_per_instance,
                             pixel_noise_stddev=pixel_noise_stddev,
                             caption_realizer=caption_realizer,
                             language=language)
Exemplo n.º 14
0
    def __init__(
            self,
            world_size=64,
            world_color='black',
            shapes=('square', 'rectangle', 'triangle', 'pentagon', 'cross',
                    'circle', 'semicircle', 'ellipse'),
            colors=('red', 'green', 'blue', 'yellow', 'magenta', 'cyan',
                    'gray'),
            textures=('solid', ),
            rotation=True,
            size_range=(0.1, 0.25),
            distortion_range=(2.0, 3.0),
            shade_range=0.4,
            collision_tolerance=0.25,
            collision_shade_difference=0.5,
            boundary_tolerance=0.25,
            entity_counts=(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15),
            train_entity_counts=(1, 2, 4, 6, 7, 9, 11, 12, 14),
            validation_entity_counts=(3, 8, 13),
            validation_count_rate=0.5,
            test_entity_counts=(5, 10, 15),
            test_count_rate=0.5,
            validation_combinations=(('square', 'red',
                                      'solid'), ('triangle', 'green', 'solid'),
                                     ('circle', 'blue', 'solid')),
            validation_space_rate_range=(0.0, 1.0),
            validation_combination_rate=0.5,
            test_combinations=(('rectangle', 'yellow',
                                'solid'), ('cross', 'magenta', 'solid'),
                               ('ellipse', 'cyan', 'solid')),
            test_space_rate_range=(0.0, 1.0),
            test_combination_rate=0.5,
            max_provoke_collision_rate=0.33,
            reinforcement_range=(1, 3),
            caption_size=28,
            vocabulary=('.', 'a', 'above', 'all', 'an', 'and', 'are', 'as',
                        'at', 'behind', 'below', 'bigger', 'blue', 'but',
                        'circle', 'circles', 'closer', 'cross', 'crosses',
                        'cyan', 'darker', 'eight', 'either', 'ellipse',
                        'ellipses', 'exactly', 'farther', 'few', 'five',
                        'four', 'from', 'front', 'gray', 'green', 'half', 'in',
                        'is', 'least', 'left', 'less', 'lighter', 'magenta',
                        'many', 'more', 'most', 'no', 'none', 'not', 'of',
                        'one', 'or', 'pentagon', 'pentagons', 'quarter',
                        'quarters', 'rectangle', 'rectangles', 'red', 'right',
                        'semicircle', 'semicircles', 'seven', 'shape',
                        'shapes', 'six', 'smaller', 'square', 'squares',
                        'than', 'the', 'there', 'third', 'thirds', 'three',
                        'to', 'triangle', 'triangles', 'twice', 'two',
                        'yellow', 'zero'),
            correct_ratio=0.5,
            train_correct_ratio=None,
            validation_correct_ratio=None,
            test_correct_ratio=None,
            worlds_per_instance=1,
            captions_per_instance=1,
            pixel_noise_stddev=0.0,
            caption_realizer='dmrs',
            language=None):

        random_generator = RandomAttributesGenerator(
            world_size=world_size,
            world_color=world_color,
            shapes=shapes,
            colors=colors,
            textures=textures,
            rotation=rotation,
            size_range=size_range,
            distortion_range=distortion_range,
            shade_range=shade_range,
            collision_tolerance=collision_tolerance,
            collision_shade_difference=collision_shade_difference,
            boundary_tolerance=boundary_tolerance,
            entity_counts=entity_counts,
            train_entity_counts=train_entity_counts,
            validation_entity_counts=validation_entity_counts,
            test_entity_counts=test_entity_counts,
            validation_combinations=validation_combinations,
            test_combinations=test_combinations,
            max_provoke_collision_rate=max_provoke_collision_rate)
        reinforced_attributes_generator = ReinforcedAttributesGenerator(
            world_size=world_size,
            world_color=world_color,
            shapes=shapes,
            colors=colors,
            textures=textures,
            rotation=rotation,
            size_range=size_range,
            distortion_range=distortion_range,
            shade_range=shade_range,
            collision_tolerance=collision_tolerance,
            collision_shade_difference=collision_shade_difference,
            boundary_tolerance=boundary_tolerance,
            entity_counts=entity_counts,
            train_entity_counts=train_entity_counts,
            validation_entity_counts=validation_entity_counts,
            test_entity_counts=test_entity_counts,
            validation_combinations=validation_combinations,
            test_combinations=test_combinations,
            max_provoke_collision_rate=max_provoke_collision_rate,
            reinforcement_range=reinforcement_range)
        world_generator = GeneratorMixer(
            generators=(random_generator, reinforced_attributes_generator))

        body_captioner = AttributeTypeRelationCaptioner(
            attribute_type_captioner=CaptionerMixer(
                captioners=(RegularAttributeCaptioner(),
                            RegularTypeCaptioner())))
        existential_captioner = CaptionerMixer(captioners=(
            RegularTypeCaptioner(),
            ExistentialCaptioner(restrictor_captioner=RegularTypeCaptioner(
                hypernym_rate=1.0, logical_tautology_rate=1.0),
                                 body_captioner=body_captioner)))
        relation_captioner = ExistentialCaptioner(
            restrictor_captioner=RegularTypeCaptioner(),
            body_captioner=RelationCaptioner(
                reference_captioner=RegularTypeCaptioner(),
                comparison_captioner=RegularTypeCaptioner()))
        quantifier_captioner = QuantifierCaptioner(
            restrictor_captioner=RegularTypeCaptioner(
                hypernym_rate=1.0, logical_tautology_rate=1.0),
            body_captioner=body_captioner)
        number_bound_captioner = NumberBoundCaptioner(
            quantifier_captioner=quantifier_captioner)
        comparative_quantifier_captioner = ComparativeQuantifierCaptioner(
            restrictor_captioner=RegularTypeCaptioner(hypernym_rate=1.0),
            comparison_captioner=RegularTypeCaptioner(hypernym_rate=1.0),
            body_captioner=body_captioner)
        quantification_captioner = CaptionerMixer(
            captioners=(quantifier_captioner, number_bound_captioner,
                        comparative_quantifier_captioner),
            distribution=[2, 2, 1])
        world_captioner = CaptionerMixer(captioners=(
            ConjunctionCaptioner(captioners=(existential_captioner,
                                             relation_captioner,
                                             quantification_captioner)),
            DisjunctionCaptioner(captioners=(existential_captioner,
                                             relation_captioner,
                                             quantification_captioner))))

        super(Combination,
              self).__init__(world_generator=world_generator,
                             world_captioner=world_captioner,
                             caption_size=caption_size,
                             vocabulary=vocabulary,
                             correct_ratio=correct_ratio,
                             train_correct_ratio=train_correct_ratio,
                             validation_correct_ratio=validation_correct_ratio,
                             test_correct_ratio=test_correct_ratio,
                             worlds_per_instance=worlds_per_instance,
                             captions_per_instance=captions_per_instance,
                             pixel_noise_stddev=pixel_noise_stddev,
                             caption_realizer=caption_realizer,
                             language=language)
Exemplo n.º 15
0
 def __init__(
     self,
     world_size=64,
     world_colors=('black',),
     shapes=('square', 'rectangle', 'triangle', 'pentagon', 'cross', 'circle', 'semicircle', 'ellipse'),
     colors=('red', 'green', 'blue', 'yellow', 'magenta', 'cyan', 'gray'),
     textures=('solid',),
     rotation=True,
     size_range=(0.1, 0.25),
     distortion_range=(2.0, 3.0),
     shade_range=0.4,
     collision_tolerance=0.25,
     collision_shade_difference=0.5,
     boundary_tolerance=None,
     entity_counts=(3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15),
     train_entity_counts=None,
     validation_entity_counts=None,
     test_entity_counts=None,
     validation_count_rate=0.5,
     test_count_rate=0.5,
     validation_combinations=None,
     test_combinations=None,
     validation_space_rate_range=(0.0, 1.0),
     test_space_rate_range=(0.0, 1.0),
     validation_combination_rate=0.5,
     test_combination_rate=0.5,
     caption_size=31,
     # vocabulary=('.', 'a', 'above', 'all', 'an', 'and', 'are', 'as', 'at', 'behind', 'below', 'besides', 'bigger', 'biggest', 'blue', 'but', 'circle', 'circles', 'closer', 'closest', 'color', 'cross', 'crosses', 'cyan', 'darker', 'darkest', 'different', 'eight', 'either', 'ellipse', 'ellipses', 'exactly', 'exists', 'farther', 'farthest', 'few', 'five', 'four', 'from', 'front', 'gray', 'green', 'half', 'if', 'in', 'is', 'least', 'left', 'leftmost', 'less', 'lighter', 'lightest', 'lower', 'lowermost', 'magenta', 'many', 'more', 'most', 'no', 'none', 'not', 'of', 'one', 'only', 'or', 'pentagon', 'pentagons', 'quarter', 'quarters', 'rectangle', 'rectangles', 'red', 'right', 'rightmost', 'same', 'semicircle', 'semicircles', 'seven', 'shape', 'shapes', 'six', 'smaller', 'smallest', 'square', 'squares', 'than', 'the', 'there', 'third', 'thirds', 'three', 'to', 'triangle', 'triangles', 'twice', 'two', 'upper', 'uppermost', 'yellow', 'zero'),
     pixel_noise_stddev=None,
 ):
     values = dict(world_l='world', world_model_l='model', 
                   world_r='world', world_model_r='model',
                   caption='language', caption_length='alternatives(int)')
     vectors = dict(caption=caption_size)
     super(GenNLVRDataset, self).__init__(values=values, world_size=world_size, vectors=vectors, pixel_noise_stddev=pixel_noise_stddev)
     
     world_generator = RandomAttributesGenerator(
         world_size=world_size,
         world_colors=world_colors,
         shapes=shapes,
         colors=colors,
         textures=textures,
         rotation=rotation,
         size_range=size_range,
         distortion_range=distortion_range,
         shade_range=shade_range,
         collision_tolerance=collision_tolerance,
         collision_shade_difference=collision_shade_difference,
         boundary_tolerance=boundary_tolerance,
         entity_counts=entity_counts,
         train_entity_counts=train_entity_counts,
         validation_entity_counts=validation_entity_counts,
         validation_count_rate=validation_count_rate,
         test_entity_counts=test_entity_counts,
         test_count_rate=test_count_rate,
         validation_combinations=validation_combinations,
         validation_space_rate_range=validation_space_rate_range,
         validation_combination_rate=validation_combination_rate,
         test_combinations=test_combinations,
         test_space_rate_range=test_space_rate_range,
         test_combination_rate=test_combination_rate,
         max_provoke_collision_rate=0. # set to zero here
     )
     self.world_generator = world_generator
     self.meta_generator = MetaGenerator(
         world_size=world_size,
         world_colors=world_colors,
         shapes=shapes,
         colors=colors,
         textures=textures,
         rotation=rotation,
         size_range=size_range,
         distortion_range=distortion_range,
         shade_range=shade_range,
         collision_tolerance=collision_tolerance,
         collision_shade_difference=collision_shade_difference,
         boundary_tolerance=boundary_tolerance
     )
     self.captioner = GenNLVRCaptioner()
Exemplo n.º 16
0
    def __init__(
            self,
            world_size=64,
            world_color='black',
            shapes=('square', 'rectangle', 'triangle', 'pentagon', 'cross',
                    'circle', 'semicircle', 'ellipse'),
            colors=('red', 'green', 'blue', 'yellow', 'magenta', 'cyan',
                    'gray'),
            textures=('solid', ),
            rotation=True,
            size_range=(0.1, 0.25),
            distortion_range=(2.0, 3.0),
            shade_range=0.4,
            collision_tolerance=0.25,
            collision_shade_difference=0.5,
            boundary_tolerance=None,
            entity_counts=(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15),
            train_entity_counts=None,
            validation_entity_counts=None,
            test_entity_counts=None,
            validation_count_rate=0.5,
            test_count_rate=0.5,
            validation_combinations=None,
            test_combinations=None,
            validation_space_rate_range=(0.0, 1.0),
            test_space_rate_range=(0.0, 1.0),
            validation_combination_rate=0.5,
            test_combination_rate=0.5,
            max_provoke_collision_rate=0.33,
            reinforcement_range=(1, 3),
            generators=None,
            captioners=None,
            connectives=None,
            caption_size=28,
            vocabulary=('.', 'a', 'above', 'all', 'an', 'and', 'are', 'as',
                        'at', 'behind', 'below', 'bigger', 'blue', 'but',
                        'circle', 'circles', 'closer', 'color', 'cross',
                        'crosses', 'cyan', 'darker', 'different', 'eight',
                        'either', 'ellipse', 'ellipses', 'exactly', 'farther',
                        'few', 'five', 'four', 'from', 'front', 'gray',
                        'green', 'half', 'if', 'in', 'is', 'least', 'left',
                        'less', 'lighter', 'magenta', 'many', 'more', 'most',
                        'no', 'none', 'not', 'of', 'one', 'only', 'or',
                        'pentagon', 'pentagons', 'quarter', 'quarters',
                        'rectangle', 'rectangles', 'red', 'right', 'same',
                        'semicircle', 'semicircles', 'seven', 'shape',
                        'shapes', 'six', 'smaller', 'square', 'squares',
                        'than', 'the', 'there', 'third', 'thirds', 'three',
                        'to', 'triangle', 'triangles', 'twice', 'two',
                        'yellow', 'zero'),
            correct_ratio=0.5,
            train_correct_ratio=None,
            validation_correct_ratio=None,
            test_correct_ratio=None,
            worlds_per_instance=1,
            captions_per_instance=1,
            pixel_noise_stddev=0.0,
            caption_realizer='dmrs',
            language=None):

        generator_list = list()

        if generators is None or 'random' in generators:
            random_generator = RandomAttributesGenerator(
                world_size=world_size,
                world_color=world_color,
                shapes=shapes,
                colors=colors,
                textures=textures,
                rotation=rotation,
                size_range=size_range,
                distortion_range=distortion_range,
                shade_range=shade_range,
                collision_tolerance=collision_tolerance,
                collision_shade_difference=collision_shade_difference,
                boundary_tolerance=boundary_tolerance,
                entity_counts=entity_counts,
                train_entity_counts=train_entity_counts,
                validation_entity_counts=validation_entity_counts,
                validation_count_rate=validation_count_rate,
                test_entity_counts=test_entity_counts,
                test_count_rate=test_count_rate,
                validation_combinations=validation_combinations,
                validation_space_rate_range=validation_space_rate_range,
                validation_combination_rate=validation_combination_rate,
                test_combinations=test_combinations,
                test_space_rate_range=test_space_rate_range,
                test_combination_rate=test_combination_rate,
                max_provoke_collision_rate=max_provoke_collision_rate)
            generator_list.append(random_generator)

        if generators is None or 'reinforced' in generators:
            reinforced_generator = ReinforcedAttributesGenerator(
                world_size=world_size,
                world_color=world_color,
                shapes=shapes,
                colors=colors,
                textures=textures,
                rotation=rotation,
                size_range=size_range,
                distortion_range=distortion_range,
                shade_range=shade_range,
                collision_tolerance=collision_tolerance,
                collision_shade_difference=collision_shade_difference,
                boundary_tolerance=boundary_tolerance,
                entity_counts=entity_counts,
                train_entity_counts=train_entity_counts,
                validation_entity_counts=validation_entity_counts,
                validation_count_rate=validation_count_rate,
                test_entity_counts=test_entity_counts,
                test_count_rate=test_count_rate,
                validation_combinations=validation_combinations,
                validation_space_rate_range=validation_space_rate_range,
                validation_combination_rate=validation_combination_rate,
                test_combinations=test_combinations,
                test_space_rate_range=test_space_rate_range,
                test_combination_rate=test_combination_rate,
                max_provoke_collision_rate=max_provoke_collision_rate,
                reinforcement_range=reinforcement_range)
            generator_list.append(reinforced_generator)

        world_generator = GeneratorMixer(generators=generator_list)

        restrictor_captioner = CaptionerMixer(
            captioners=(EmptyTypeCaptioner(),
                        RegularTypeCaptioner(hypernym_rate=1.0)))

        body_captioner = AttributeTypeRelationCaptioner(
            attribute_type_captioner=CaptionerMixer(
                captioners=(RegularAttributeCaptioner(),
                            RegularTypeCaptioner(hypernym_rate=0.0))))

        captioner_list = list()

        if captioners is None or 'existential' in captioners:
            existential_captioner = CaptionerMixer(
                captioners=(RegularTypeCaptioner(),
                            ExistentialCaptioner(
                                restrictor_captioner=restrictor_captioner,
                                body_captioner=body_captioner)),
                distribution=(1, 2))
            captioner_list.append(existential_captioner)

        if captioners is None or 'relational' in captioners:
            relational_captioner = ExistentialCaptioner(
                restrictor_captioner=RegularTypeCaptioner(),
                body_captioner=RelationCaptioner(
                    reference_captioner=RegularTypeCaptioner(),
                    comparison_captioner=RegularTypeCaptioner()))
            captioner_list.append(relational_captioner)

        if captioners is None or 'quantification' in captioners:
            quantification_captioner = QuantifierCaptioner(
                restrictor_captioner=restrictor_captioner,
                body_captioner=body_captioner)
            captioner_list.append(quantification_captioner)

        captioner = CaptionerMixer(captioners=captioner_list)

        captioner_list = list()

        if connectives is None or 'conjunction' in connectives:
            captioner_list.append(ConjunctionCaptioner(captioner=captioner))

        if connectives is None or 'disjunction' in connectives:
            captioner_list.append(DisjunctionCaptioner(captioner=captioner))

        if connectives is None or 'implication' in connectives:
            captioner_list.append(ImplicationCaptioner(captioner=captioner))

        if connectives is None or 'equivalence' in connectives:
            captioner_list.append(EquivalenceCaptioner(captioner=captioner))

        world_captioner = CaptionerMixer(captioners=captioner_list)

        super(LogicalDataset,
              self).__init__(world_generator=world_generator,
                             world_captioner=world_captioner,
                             caption_size=caption_size,
                             vocabulary=vocabulary,
                             correct_ratio=correct_ratio,
                             train_correct_ratio=train_correct_ratio,
                             validation_correct_ratio=validation_correct_ratio,
                             test_correct_ratio=test_correct_ratio,
                             worlds_per_instance=worlds_per_instance,
                             captions_per_instance=captions_per_instance,
                             pixel_noise_stddev=pixel_noise_stddev,
                             caption_realizer=caption_realizer,
                             language=language)
Exemplo n.º 17
0
    def __init__(self,
                 world_size=64,
                 world_color='black',
                 shapes=('square', 'rectangle', 'triangle', 'pentagon',
                         'cross', 'circle', 'semicircle', 'ellipse'),
                 colors=('red', 'green', 'blue', 'yellow', 'magenta', 'cyan',
                         'gray'),
                 textures=('solid', ),
                 rotation=True,
                 size_range=(0.1, 0.25),
                 distortion_range=(2.0, 3.0),
                 shade_range=0.4,
                 boundary_tolerance=0.25,
                 validation_combinations=(('square', 'red', 'solid'),
                                          ('triangle', 'green', 'solid'),
                                          ('circle', 'blue', 'solid')),
                 test_combinations=(('rectangle', 'yellow',
                                     'solid'), ('cross', 'magenta', 'solid'),
                                    ('ellipse', 'cyan', 'solid')),
                 caption_size=9,
                 vocabulary=('.', 'a', 'an', 'blue', 'circle', 'cross', 'cyan',
                             'ellipse', 'gray', 'green', 'is', 'magenta',
                             'pentagon', 'rectangle', 'red', 'semicircle',
                             'shape', 'square', 'there', 'triangle', 'yellow'),
                 correct_ratio=0.5,
                 train_correct_ratio=None,
                 validation_correct_ratio=None,
                 test_correct_ratio=None,
                 worlds_per_instance=1,
                 captions_per_instance=1,
                 pixel_noise_stddev=0.0,
                 caption_realizer='dmrs',
                 language=None):

        world_generator = RandomAttributesGenerator(
            world_size=world_size,
            world_color=world_color,
            shapes=shapes,
            colors=colors,
            textures=textures,
            rotation=rotation,
            size_range=size_range,
            distortion_range=distortion_range,
            shade_range=shade_range,
            boundary_tolerance=boundary_tolerance,
            validation_combinations=validation_combinations,
            test_combinations=test_combinations,
        )

        world_captioner = CaptionerMixer(captioners=(
            RegularTypeCaptioner(existing_attribute_rate=0.0),
            ExistentialCaptioner(
                restrictor_captioner=RegularTypeCaptioner(
                    hypernym_rate=1.0,
                    existing_attribute_rate=0.0,
                    logical_tautology_rate=1.0),
                body_captioner=AttributeTypeRelationCaptioner(
                    attribute_type_captioner=CaptionerMixer(captioners=(
                        RegularAttributeCaptioner(existing_attribute_rate=0.0),
                        RegularTypeCaptioner(hypernym_rate=0.0,
                                             existing_attribute_rate=0.0)))),
                pragmatical_tautology_rate=1.0)))

        super(Oneshape,
              self).__init__(world_generator=world_generator,
                             world_captioner=world_captioner,
                             caption_size=caption_size,
                             vocabulary=vocabulary,
                             correct_ratio=correct_ratio,
                             train_correct_ratio=train_correct_ratio,
                             validation_correct_ratio=validation_correct_ratio,
                             test_correct_ratio=test_correct_ratio,
                             worlds_per_instance=worlds_per_instance,
                             captions_per_instance=captions_per_instance,
                             pixel_noise_stddev=pixel_noise_stddev,
                             caption_realizer=caption_realizer,
                             language=language)
Exemplo n.º 18
0
    def __init__(self,
                 world_size=64,
                 world_color='black',
                 shapes=('square', 'rectangle', 'triangle', 'pentagon',
                         'cross', 'circle', 'semicircle', 'ellipse'),
                 colors=('red', 'green', 'blue', 'yellow', 'magenta', 'cyan',
                         'gray'),
                 textures=('solid', ),
                 rotation=True,
                 size_range=(0.1, 0.25),
                 distortion_range=(2.0, 3.0),
                 shade_range=0.4,
                 boundary_tolerance=0.25,
                 validation_combinations=(('square', 'red', 'solid'),
                                          ('triangle', 'green', 'solid'),
                                          ('circle', 'blue', 'solid')),
                 validation_space_rate_range=(0.0, 1.0),
                 validation_combination_rate=0.5,
                 test_combinations=(('rectangle', 'yellow',
                                     'solid'), ('cross', 'magenta', 'solid'),
                                    ('ellipse', 'cyan', 'solid')),
                 test_space_rate_range=(0.0, 1.0),
                 test_combination_rate=0.5,
                 caption_size=14,
                 vocabulary=('.', 'a', 'above', 'an', 'below', 'blue',
                             'circle', 'cross', 'cyan', 'ellipse', 'gray',
                             'green', 'is', 'left', 'magenta', 'of',
                             'pentagon', 'rectangle', 'red', 'right',
                             'semicircle', 'shape', 'square', 'the', 'to',
                             'triangle', 'yellow'),
                 correct_ratio=0.5,
                 train_correct_ratio=None,
                 validation_correct_ratio=None,
                 test_correct_ratio=None,
                 worlds_per_instance=1,
                 captions_per_instance=1,
                 pixel_noise_stddev=0.0,
                 caption_realizer='dmrs',
                 language=None):

        world_generator = RandomAttributesGenerator(
            world_size=world_size,
            world_color=world_color,
            shapes=shapes,
            colors=colors,
            textures=textures,
            rotation=rotation,
            size_range=size_range,
            distortion_range=distortion_range,
            shade_range=shade_range,
            collision_tolerance=0.0,
            boundary_tolerance=boundary_tolerance,
            entity_counts=(2, ),
            validation_combinations=validation_combinations,
            test_combinations=test_combinations)

        world_captioner = ExistentialCaptioner(
            restrictor_captioner=RegularTypeCaptioner(),
            body_captioner=RelationCaptioner(
                reference_captioner=RegularTypeCaptioner(),
                comparison_captioner=RegularTypeCaptioner(),
                relations=('x-rel', 'y-rel')  # , 'z-rel', 'proximity-rel'
            ),
            pragmatical_tautology_rate=1.0)

        super(Spatial,
              self).__init__(world_generator=world_generator,
                             world_captioner=world_captioner,
                             caption_size=caption_size,
                             vocabulary=vocabulary,
                             correct_ratio=correct_ratio,
                             train_correct_ratio=train_correct_ratio,
                             validation_correct_ratio=validation_correct_ratio,
                             test_correct_ratio=test_correct_ratio,
                             worlds_per_instance=worlds_per_instance,
                             captions_per_instance=captions_per_instance,
                             pixel_noise_stddev=pixel_noise_stddev,
                             caption_realizer=caption_realizer,
                             language=language)