У меня есть файл 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
в словаре функций, но я не знаю, как это исправить, потому что, по сути, я еще не очень хорошо разбираюсь в структурах данных тензорного потока.