Я пишу конвейер tf.data для ввода в keras
позже.Дело в том, что мои данные в форме файлов рассола.У меня есть список имен файлов, передаваемых в tf-данные, которые я собираюсь загрузить, используя собственный tf.py_func, вызывающий pickle внутри.
Проблема возникает, когда я пытаюсь построить итератор из набора данных, выдавая ошибку, что
"Невозможно преобразовать значение,), типы: (tf.float32, tf.float32)> к типу TensorFlow DType. "
Я полагаю, это потому, что тензор потока не может определить форму загруженных данных рассола.Я немного растерялся, как поступить, или если это вообще возможно в данных TF.
dataset = tf.data.Dataset.from_tensor_slices(dataset_filepath_list)
def parse_input_data_function(filename):
# pickle file is a tuple, (data, label)
histogram_data, label = pickle.load(open(filename, 'rb'))
histogram_data = historgram_data.transpose(1, 0)
histogram_data = historgram_data.reshape([-1, 8, 32])
return histogram_data.astype('float32'), float(label)
dataset = dataset.map(
lambda filename : tuple(tf.py_func(
parse_input_data_function, [filename], [tf.float32,
tf.float32])))
dataset = dataset.shuffle(len(dataset_filename_list))
.batch(batch_size).repeat()
# this line is where the error occurs
training_iterator = tf.data.Iterator.from_structure(dataset,
dataset.output_shapes)