Обрезать слово до составляющих его символов в тензорном потоке - PullRequest
0 голосов
/ 20 января 2019

У меня есть тензорный заполнитель формы [None, None] типа string. Например, это выглядит так

[["Hello", "World"], ["Amercian", "people"]].

Теперь я хочу преобразовать этот 2D-тензор в 3D-тензор, который теперь будет в основном разделять каждое слово до составляющих его символов. Таким образом, выход выглядит как [[["H", "e", "l", "l", "o"], ["W", "o", "r", "l", "d"]], [["A", "m", "e", "r", "i", "c", "a", "n"], ["p", "e", "o", "p", "l", "e"]]].

Поскольку каждое слово имеет различное количество символов, новый тензор должен дополнять маленькие слова пробелами. Есть ли способ к этой вещи в тензорном потоке?

1 Ответ

0 голосов
/ 22 января 2019

Запускается

import tensorflow as tf
import tensorflow_transform as tft

input_data = tf.placeholder(shape=[None, None], dtype=tf.string, name="words")
words_flatten = tf.reshape(words, [tf.shape(words)[0] * tf.shape(words)[1]])
words_split = tf.string_split(words_flatten, delimiter="")
ngrams = tft.ngrams(words_split, ngram_range=(1,3), separator="")
tokens= tf.sparse_reset_shape(tf.sparse_fill_empty_rows(ngrams, "")[0])
tokens_dense = tf.reshape(
            tf.sparse_to_dense(tokens.indices, tokens.dense_shape, tokens.values, default_value=""),
            [tf.shape(words)[0], tf.shape(words)[1], -1]
        )

tokens_dense - желаемый вывод.

...