У меня есть текстовый файл, содержащий одно предложение в строке
Когда я создаю TextLineDataset и перебираю его с помощью итератора, он возвращает файл построчно
Я хочу перебирать мой файл по два токена за раз, вот мой текущий код:
sentences = tf.data.TextLineDataset("data/train.src")
iterator = sentences.make_initializable_iterator()
next_element = iterator.get_next()
sess = tf.Session()
sess.run(tf.tables_initializer())
sess.run(iterator.initializer)
elem = sess.run(next_element)
print(elem)
Можно ли это сделать с помощью TextLineDataset?
Обновлено: Под «токенами» я подразумеваю «слова»
Я имею в виду элементы строки, мы можем сказать «слова» вместо «токенов», если хотите. Я отредактирую свой вопрос, спасибо
Абсолютно это возможно, но вам придется немного повозиться. Тебе нужно:
Мы можем использовать tf.strings.split
для 1.:
words = sentences.map(tf.strings.split)
и flat_map
для 2.:
flat_words = words.flat_map(tf.data.Dataset.from_tensor_slices)
и batch
на 3:
word_pairs = flat_words.batch(2)
и, конечно же, мы могли бы связать все эти операции вместе, чтобы получить что-то вроде этого:
word_pairs = sentences \
.map(tf.strings.split) \
.flat_map(tf.data.Dataset.from_tensor_slices) \
.batch(2)
Просто чтобы уточнить - когда вы говорите токены, вы имеете в виду элементы строки? Или, вернее, к самой линии?