Exemplo n.º 1
0
def construct_transforms(dataset_args, transforms_args):
    transforms_dict = {
        "merge_two_signals":
        TransformSignal(merge_two_signals, transforms_args),
        "identity":
        TransformSignal(identity, transforms_args),
        "identity_ml":
        TransformSignal(identity_ml, transforms_args),
        "delay_signal":
        TransformSignal(delay_signal, transforms_args),
        "add_noise_to_signal":
        TransformSignal(add_noise_to_signal, transforms_args),
        "add_noise_to_signal_only_one_signal":
        TransformSignal(add_noise_to_signal_only_one_signal, transforms_args),
        "add_noise_to_signal_with_proba":
        TransformSignal(add_noise_to_signal_with_proba, transforms_args),
        "merge_two_emd":
        TransformSignal(merge_two_emd, transforms_args),
        "randaugment":
        TransformSignal(construct_randaugment, transforms_args),
        "mask_along_time":
        TransformFFT(mask_along_time, transforms_args),
        "mask_along_frequency":
        TransformFFT(mask_along_frequency, transforms_args),
    }
    transform_list = []
    for transform_name in dataset_args["transform_list"]:
        transform = []
        for operation in transform_name:
            transform.append(transforms_dict[operation])
        transform_list.append(transform)
    return transform_list
def test_transform_construction():

    transforms = {
        "transform_list": [["identity"], ["mask_along_time", "identity"]]
    }

    constructed_transforms = [[TransformSignal(identity, transforms_args)],
                              [
                                  TransformFFT(mask_along_time,
                                               transforms_args),
                                  TransformSignal(identity, transforms_args)
                              ]]

    compare(construct_transforms(transforms, transforms_args),
            constructed_transforms)
def test_data_recovery():
    train_sample, _, _ = get_dummy_sample()
    X = train_sample[0][0]
    datum = Datum(X=X, y=train_sample[0][1])
    datum = TransformSignal(identity)(TransformFFT(identity)(datum))

    assert_almost_equal(datum.X.numpy(), X, decimal=3)
def test_delay_signal():

    train_sample, _, _ = get_dummy_sample()
    transf = TransformSignal(delay_signal, transforms_args)
    X = train_sample[0][0]
    datum = Datum(X=X, y=train_sample[0][1])
    datum = transf(datum)
    value_cutoff = int(np.round(transforms_args["magnitude"] * X.shape[1]))
    assert_array_equal(X[:, -value_cutoff:], datum.X[:, :value_cutoff])
    assert_array_equal(X[:, :-value_cutoff], datum.X[:, value_cutoff:])
def test_noise_addition():
    transforms_args["magnitude"] = 0.1
    train_sample, _, _ = get_dummy_sample()
    transf = TransformSignal(add_noise_to_signal, transforms_args)
    X = train_sample[0][0]
    scale = torch.mean(torch.abs(X)).item()
    datum = Datum(X=X, y=train_sample[0][1])
    datum = transf(datum)
    remains = (datum.X - X) / (transforms_args["magnitude"] * 0.1)
    assert_almost_equal(np.mean(remains.numpy()) / scale, 0, 1)
    assert_almost_equal(np.var(remains.numpy()) / (scale * scale), 1, 1)
def test_randaugment():

    train_sample, _, _ = get_dummy_sample()
    subset_aug_sample, subset_aug_labels = get_sample(train_sample,
                                                      [["randaugment"]],
                                                      sample_size=1,
                                                      random_state=1)
    transforms_args["train_sample"] = train_sample
    transforms_args["label_index_dict"] = create_label_index_dict(
        subset_aug_sample, subset_aug_labels)
    transf = TransformSignal(randaugment, transforms_args)
    X = train_sample[0][0]
    datum = Datum(X=X, y=train_sample[0][1])
    datum = transf(datum)
def test_signal_addition():
    train_sample, _, _ = get_dummy_sample()
    subset_aug_sample, subset_aug_labels = get_sample(train_sample,
                                                      [["merge_two_signals"]],
                                                      sample_size=1,
                                                      random_state=1)
    transforms_args["train_sample"] = train_sample
    transforms_args["label_index_dict"] = create_label_index_dict(
        subset_aug_sample, subset_aug_labels)
    transf = TransformSignal(merge_two_signals, transforms_args)
    X = train_sample[0][0]
    datum = Datum(X=X, y=train_sample[0][1])
    datum = transf(datum)
    assert_array_almost_equal(X, datum.X, 5)
def test_add_noise_to_signal_with_proba():
    transforms_args["magnitude"] = 0.1
    train_sample, _, _ = get_dummy_sample()
    transf = TransformSignal(add_noise_to_signal_with_proba, transforms_args)
    random.seed(1)  # returns 0.13
    X = train_sample[0][0]
    datum = Datum(X=X, y=train_sample[0][1])
    datum = transf(datum)
    assert_almost_equal(datum.X.numpy(), X)
    random.seed(0)  # return 0.88
    datum = transf(datum)
    scale = torch.mean(torch.abs(X)).item()
    remains = (datum.X - X) / (transforms_args["magnitude"] * 0.1)
    assert_almost_equal(np.mean(remains.numpy()) / scale, 0, 1)
    assert_almost_equal(np.var(remains.numpy()) / (scale * scale), 1, 1)
def test_add_noise_to_signal_only_one_signal():
    transforms_args["magnitude"] = 0.1
    train_sample, _, _ = get_dummy_sample()
    transf = TransformSignal(add_noise_to_signal_only_one_signal,
                             transforms_args)

    random.seed(1)  # returns 0.1
    X = train_sample[0][0]
    datum = Datum(X=X, y=train_sample[0][1])
    datum = transf(datum)
    assert_almost_equal(datum.X[1, :].numpy(), X[1, :])

    random.seed(0)  # returns 0.8
    X = train_sample[0][0]
    datum = Datum(X=X, y=train_sample[0][1])
    datum = transf(datum)
    assert_almost_equal(datum.X[0, :].numpy(), X[0, :])
Exemplo n.º 10
0
def create_transforms_and_subset(train_dataset, dataset_args, sample_size,
                                 transforms_args, i):
    train_subset = train_dataset
    train_dataset.change_transform_list([[TransformSignal(identity)]])
    # then, find what will be the labels of augmented data, without constructing transforms
    subset_aug_sample, subset_aug_labels = get_sample(
        train_dataset,
        dataset_args["transform_list"],
        sample_size,
        random_state=i)
    # Define everything needed to construct transforms, even if "train_subset" will be replaced
    # afterwards.
    transforms_args["train_sample"] = train_dataset
    transforms_args["label_index_dict"] = create_label_index_dict(
        subset_aug_sample, subset_aug_labels)
    # Constructs transforms
    dataset_args["constructed_transform_list"] = construct_transforms(
        dataset_args, transforms_args)
    # Update train dataset
    train_dataset.change_transform_list(
        dataset_args["constructed_transform_list"])
    train_subset = Subset(dataset=train_dataset, indices=subset_aug_sample)
    return dataset_args, train_subset