BatchDataset - это экземпляр tf.data.Dataset, который был пакетным путем вызова его метода .batch(..)
. Вы не можете «проиндексировать» набор данных тензорного потока или вызвать для него функцию len
. Я предлагаю повторить его, как в первом фрагменте кода.
Однако в вашем наборе данных вы используете .to_dict('list')
, что означает, что ключ в вашем словаре отображается в список как значение. В основном у вас есть «столбцы» для каждого ключа, а не строки, вы этого хотите? Это значительно усложнит построчную печать (показанную в примере печати таблицы, который вы связали), поскольку у вас нет разных функций в строке. Также он отличается от примера в официальном коде Tensorflow, где точка данных состоит из нескольких функций, а не из одной функции с несколькими значениями.
Объединение кода Tensorflow и красивой печати:
columns = list(df.columns.values)+['target']
dict_slices = tf.data.Dataset.from_tensor_slices((df.values, target.values)).batch(1) # batch = 1 because otherwise you will get multiple dict_slice - target pairs in one iteration below!
print(*columns, sep='\t')
for dict_slice, target in dict_slices.take(1):
print(*dict_slice.numpy(), target.numpy(), sep='\t')
Это требует небольшого форматирования, потому что ширина столбцов не равна.