Как приобрести форму tf.data.dataset? - PullRequest
1 голос
/ 20 мая 2019

Я знаю, что у набора данных есть output_shapes, но он показывает как показано ниже:

data_set: DatasetV1 Адаптер формы: {item_id_hist: (?,?), Теги: (?,?), Client_platform: (?,), Вход: (?,), Item_id: (?,), Метка: (? ,), режим: (?,), время: (?,), user_id: (?,)}, типы: {item_id_hist: tf.int64, теги: tf.int64, client_platform: tf.string, вход: tf. строка, item_id: tf.int64, метка: tf.int64, режим: tf.int64, время: tf.int64, user_id: tf.int64}

Как я могу получить общее количество моих данных?

1 Ответ

0 голосов
/ 20 мая 2019

Где известна длина, вы можете позвонить:

tf.data.experimental.cardinality(dataset)

, но если это не удается, важно знать, что TensorFlow Dataset (в общем) лениво оценивается, так что это означает, что в общем случае нам может понадобиться перебирать каждую запись, прежде чем мы сможем найти длину набор данных.

Например, предполагая, что у вас включено активное выполнение, и его небольшой «игрушечный» набор данных удобно помещается в памяти, вы можете просто enumerate добавить его в новый список и получить последний индекс (затем добавить 1, потому что списки равны нулю). индексированный):

dataset_length = [i for i,_ in enumerate(dataset)][-1] + 1

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

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