Разделить тензоры, прочитанные tf.data.TextLineDataset (), на тензоры подстроки и преобразовать в числа unig tf.Data - PullRequest
0 голосов
/ 16 июня 2020

У меня есть большой текстовый файл, который я использую в качестве набора данных. Я использую tf.data для создания обучающего набора для обучения модели типа seq2seq. Ниже приведены обработанные текстовые данные.

...
5|9|7,1,3,52,48,67,50,2,8|8,2,50,67,48,52,3,1,7|2,50,67,48,52,3,1,7,0
5|12|7,89,12,9,1,3,52,48,67,50,2,8|8,2,50,67,48,52,3,1,9,12,89,7|2,50,67,48,52,3,1,9,12,89,7,0
...

Я хочу 5 тензоров размера моего пакета (200 в моем случае), которые содержат данные каждого столбца, разделенные знаком "|" в данных. Пакеты должны быть динамически дополнены для столбцов 3,4 и 5.

Пример: я хочу 5 тензоров, подобных приведенному ниже (для данных столбца 3),

<tf.Tensor 'Placeholder:0' shape=(200, ?) dtype=int32>: array([[7, 1, 3, ..., 0, 0, 0],
        [7, 1, 3, ..., 0, 0, 0],
        [7, 89, 12, ..., 0, 0, 0],
        ...,
        [7, 1, 3, ..., 0, 0, 0],
        [7, 1, 3, ..., 0, 0, 0],
        [7, 1, 3, ..., 0, 0, 0]], dtype=int32)

Я могу прочтите данные с помощью tf.data.TextLineDataset ().

lines_dataset = tf.data.TextLineDataset("/path/to/text/file")

Я пробовал,

dataset = lines_dataset.map(lambda line_tensor: tf.strings.split(ex, "|"))

Если дает мне рваный тензорный набор данных,

...
tf.Tensor(
[b'5' b'9'
 b'7,1,3,52,48,67,50,2,8'
 b'8,2,50,67,48,52,3,1,7'
 b'2,50,67,48,52,3,1,7,0'], shape=(5,), dtype=string)
...

Но Я не могу двигаться дальше к выполнению sh остального. Приветствуется любой простой способ преобразовать эти текстовые данные в 5 требуемых тензоров.

...