Импорт строки csv в виде массива в тензорном потоке

У меня есть файл csv, содержащий большое количество N столбцов: первый столбец содержит метку, другой N-1 числовое представление моих данных (функции Chroma из музыкальной записи).

Моя идея состоит в том, чтобы представить входные данные в виде массива. На практике мне нужен эквивалент стандартного представления данных в компьютерном зрении. Поскольку мои данные хранятся в CSV, внутри определения функции ввода поезда мне нужен парсер CSV. Я делаю это таким образом

def parse_csv(line):
    columns = tf.decode_csv(line, record_defaults=DEFAULTS)  # take a line at a time
    features = {'songID': columns[0], 'x': columns[1:]}  # create a dictionary out of the features
    labels = features.pop('songID')  # define the label
    return features, labels


def train_input_fn(data_file=fp, batch_size=128):
    """Generate an input function for the Estimator."""

    # Extract lines from input files using the Dataset API.
    dataset = tf.data.TextLineDataset(data_file)
    dataset = dataset.map(parse_csv)
    dataset = dataset.shuffle(1_000_000).repeat().batch(batch_size)
    return dataset.make_one_shot_iterator().get_next()

Однако это возвращает не очень важную ошибку: AttributeError: 'list' object has no attribute 'get_shape'. Я знаю, что виновником является определение x в словаре функций, но я не знаю, как это исправить, потому что, по сути, я еще не очень хорошо разбираюсь в структурах данных тензорного потока.


person Gianluca Micchi    schedule 11.04.2018    source источник


Ответы (2)


Как оказалось, функции должны быть тензорами. Однако каждый столбец сам по себе является тензором, и если взять columns[1:], получится список тензоров. Для создания многомерного тензора, который хранит информацию из N-1 столбцов, следует использовать tf.stack:

features = {'songID': columns[0], 'x': tf.stack(columns[1:])}  # create a dictionary out of the features
person Gianluca Micchi    schedule 11.04.2018

tf.stack должен решить.

Полный пример кода доступен в следующем потоке.

Tensorflow Python читает 2 файла

person edn    schedule 13.04.2018