Как работает tenorflow.python.data.ops.dataset_ops.DatasetV1Adapter? - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь обернуть голову вокруг ML и AI с помощью TensorFlow.На сайте есть пример проблемы, которая обсуждает обработку данных .CSV.Говорят, что данные .CVS были взяты из «Титаника» и по существу содержат категориальные и числовые функции, которые будут использоваться для маркировки пассажира как живого или мертвого.

Прежде всего, если кто-то знает или имеет какие-либо ресурсыили ссылки, в которых этот пример обсуждается более подробно, чем на веб-сайте TensorFlow , пожалуйста, не могли бы вы отослать меня к этому?

Во-вторых, к моему более важному вопросу.В этом примере используется метод, позволяющий упаковать отдельные числовые данные в один цифровой ключ при сохранении категориального столбца как есть.

Для этого используется следующая функция:

class PackNumericFeatures(object):
    def __init__(self, names):
        self.names = names

    def __call__(self, features, labels):
        numeric_freatures = [features.pop(name) for name in self.names]
        numeric_features = [tf.cast(feat, tf.float32) for feat in numeric_freatures]
        numeric_features = tf.stack(numeric_features, axis=-1)
        features['numeric'] = numeric_features

        return features, labels

Вышеприведенная функция вызывается так:


NUMERIC_FEATURES = ['age','n_siblings_spouses','parch', 'fare']

packed_train_data = raw_train_data.map(PackNumericFeatures(NUMERIC_FEATURES))

Выход packed_train_data выглядит примерно так:

sex                 : [b'male' b'female' b'female' b'female' b'male']
class               : [b'Third' b'First' b'Third' b'First' b'Third']
deck                : [b'unknown' b'C' b'unknown' b'C' b'unknown']
embark_town         : [b'Southampton' b'Cherbourg' b'Southampton' b'Southampton' b'Queenstown']
alone               : [b'n' b'n' b'y' b'n' b'y']
numeric             : [[22.      1.      0.      7.25  ]
 [38.      1.      0.     71.2833]
 [26.      0.      0.      7.925 ]
 [35.      1.      0.     53.1   ]
 [28.      0.      0.      8.4583]]

Вышеуказанный вывод получается при передаче одной партииданных (т. е. packed_train_data) для функции:


def show_batch(dataset):
    for batch, head in dataset.take(1):
        for labels, value in batch.items():
            print("{:20s}: {}".format(labels, value.numpy()))

примерно так:

show_batch(packed_train_data)

Я не понимаю, как работает функция map для генерации этоговыход.В целом, я не понимаю, как вызов, содержащий функцию map, взаимодействует с классом PackNumericFeatures(object).

Я знаю, что эта проблема специфична, но любая помощь будет признательна.Приветствия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...