示例#1
0
import random

from examples.NIPS.MNIST.noisy_sequence_detection.scenario001.generate_data import generate_data
from itertools import islice


def contains_element_n_times(l, x, n):
    gen = (True for i in l if i == x)
    return next(islice(gen, n - 1, None), False)


def get_correct_digit_for_initiated_at(digit, last_digits, threshold,
                                       available_digits, appearances):
    if contains_element_n_times(last_digits, digit, appearances):
        return digit, True

    return None, None


if __name__ == '__main__':
    generate_data(
        scenario_function=lambda *args, **kwargs:
        get_correct_digit_for_initiated_at(*args, **kwargs, appearances=2),
        test_function=lambda *args, **kwargs:
        get_correct_digit_for_initiated_at(*args, **kwargs, appearances=2),
        relevant_digits=2,
        noises_function=lambda: [0.0])
示例#2
0
import random

from examples.NIPS.MNIST.noisy_sequence_detection.scenario001.generate_data import generate_data
from examples.NIPS.MNIST.noisy_sequence_detection.scenario103_2.generate_data import get_correct_digit_for_initiated_at
from examples.NIPS.MNIST.noisy_sequence_detection.scenario108_2.generate_data import get_initiated_at_scenario108

if __name__ == '__main__':
    available_digits = list(range(10))

    swap_from = random.choice(available_digits)
    swap_to = random.choice(available_digits)
    # Ensure that we are not swapping a number for itself
    while swap_from == swap_to:
        swap_to = random.choice(available_digits)

    with open('swap.txt', 'w') as o:
        o.write('{},{}'.format(swap_from, swap_to))

    generate_data(
        scenario_function=lambda *args, **kwargs: get_initiated_at_scenario108(
            *args, **kwargs, swap=(swap_from, swap_to)),
        test_function=get_correct_digit_for_initiated_at,
        relevant_digits=2)
示例#3
0
import random

from examples.NIPS.MNIST.noisy_sequence_detection.scenario001.generate_data import generate_data


def get_correct_digit_for_initiated_at(digit, last_digits, threshold, available_digits):
    if digit in last_digits:
        return digit, True

    return None, None


if __name__ == '__main__':
    generate_data(
        scenario_function=get_correct_digit_for_initiated_at,
        test_function=get_correct_digit_for_initiated_at,
        relevant_digits=3,
        noises_function=lambda: [0.0]
    )
示例#4
0
import random

from examples.NIPS.MNIST.noisy_sequence_detection.scenario001.generate_data import generate_data


def get_digit_for_initiated_at(digit, last_digits, threshold,
                               available_digits):
    if digit == last_digits[-1]:
        return digit, True
    elif random.random() < threshold:
        return random.choice(available_digits), False

    return None, None


if __name__ == '__main__':
    generate_data(scenario_function=get_digit_for_initiated_at)
示例#5
0
import random

from examples.NIPS.MNIST.noisy_sequence_detection.scenario001.generate_data import generate_data
from examples.NIPS.MNIST.noisy_sequence_detection.scenario103_2.generate_data import get_initiated_at_scenario103, \
    get_correct_digit_for_initiated_at

if __name__ == '__main__':
    generate_data(
        scenario_function=get_initiated_at_scenario103,
        test_function=get_correct_digit_for_initiated_at,
        relevant_digits=4
    )
    5: 0.6,
    6: 0.7,
    7: 0.8,
    8: 0.9,
    9: 1.0,
}


def get_probability(t, probabilities=None):
    if probabilities is None:
        probabilities = DEFAULT_PROBABILITIES

    return probabilities[t[1]]


def filter_by_probability(t, probabilities=None):
    return random.random() < get_probability(t, probabilities)


if __name__ == '__main__':
    assignment = get_random_assignment(list(range(10)))

    with open('assignment.txt', 'w') as o:
        o.write(str(assignment))

    filtered_trainset = list(filter(filter_by_probability, trainset))

    generate_data(
        training_set=filtered_trainset,
    )
import random

from examples.NIPS.MNIST.noisy_sequence_detection.scenario001.generate_data import generate_data
from examples.NIPS.MNIST.noisy_sequence_detection.scenario004.generate_data import get_random_assignment
from examples.NIPS.MNIST.noisy_sequence_detection.scenario103_2.generate_data import get_correct_digit_for_initiated_at
from examples.NIPS.MNIST.noisy_sequence_detection.scenario104_2.generate_data import get_initiated_at_scenario104

if __name__ == '__main__':
    assignment = get_random_assignment(list(range(10)))

    with open('assignment.txt', 'w') as o:
        o.write(str(assignment))

    generate_data(
        scenario_function=lambda *args, **kwargs: get_initiated_at_scenario104(
            *args, **kwargs, assignment=assignment),
        test_function=get_correct_digit_for_initiated_at,
        relevant_digits=4)
from examples.NIPS.MNIST.noisy_sequence_detection.scenario001.generate_data import generate_data


def get_digit_for_initiated_at(digit, last_digits, threshold, available_digits,
                               swap):
    if digit == last_digits[-1]:
        if digit == swap[0] and random.random() < threshold:
            return swap[1], False
        else:
            return digit, True

    return None, None


if __name__ == '__main__':
    available_digits = list(range(10))

    swap_from = random.choice(available_digits)
    swap_to = random.choice(available_digits)
    # Ensure that we are not swapping a number for itself
    while swap_from == swap_to:
        swap_to = random.choice(available_digits)

    with open('swap.txt', 'w') as o:
        o.write('{},{}'.format(swap_from, swap_to))

    generate_data(
        scenario_function=lambda *args, **kwargs: get_digit_for_initiated_at(
            *args, **kwargs, swap=(swap_from, swap_to)))
示例#9
0
    return None, None


def check_swap_for_itself(assignment):
    for i, a in enumerate(assignment):
        if i == a:
            return True

    return False


def get_random_assignment(digits):
    assignment = digits

    while check_swap_for_itself(assignment):
        random.shuffle(assignment)

    return assignment


if __name__ == '__main__':
    assignment = get_random_assignment(list(range(10)))

    with open('assignment.txt', 'w') as o:
        o.write(str(assignment))

    generate_data(
        scenario_function=lambda *args, **kwargs: get_digit_for_initiated_at(
            *args, **kwargs, assignment=assignment))
            # True label is used
            return digit, True
    elif random.random() < threshold:
        # Random label is added
        return random.choice(available_digits), False

    return None, None


def noises(min_noise=0.0, max_noise=1.1, noise_step=0.2):
    return np.arange(min_noise, max_noise, noise_step)


def folder_name(noise):
    return 'noise_{0:.2f}/'.format(noise).replace('.', '_')


if __name__ == '__main__':
    assignment = get_random_assignment(list(range(10)))

    with open('assignment.txt', 'w') as o:
        o.write(str(assignment))

    generate_data(
        noises_function=noises,
        folder_name=folder_name,
        scenario_function=lambda *args, **kwargs: get_digit_for_initiated_at(
            *args, **kwargs, assignment=assignment
        )
    )