Использование наборов данных Tensorflow - PullRequest
0 голосов
/ 14 апреля 2019

Я пытаюсь создать простой набор данных пар строк-меток и не могу получить тензор потока для правильного соединения этих пар

Я пытаюсь использовать инициализатор Dataset.from_tensor_slices и dataset.make_one_shot_iteratorитератор:

import tensorflow as tf

strings = [
    'aaaa',
    'asdf'
]
labels = [1,0]

sess = tf.Session()
tf.global_variables_initializer()

dataset = tf.data.Dataset.from_tensor_slices((strings, labels))
dataset = dataset.repeat()
dataset = dataset.shuffle(512)
iterator = dataset.make_one_shot_iterator()


x_next, label_next = iterator.get_next()
print sess.run(x_next), sess.run(label_next)

x_next, label_next = iterator.get_next()
print sess.run(x_next), sess.run(label_next)

x_next, label_next = iterator.get_next()
print sess.run(x_next), sess.run(label_next)

x_next, label_next = iterator.get_next()
print sess.run(x_next), sess.run(label_next)

В конце я ожидаю, что результат будет '1' для 'aaaa' и '0' для 'asdf', но многократно получая что-то случайное:

aaaa 0
asdf 0
aaaa 1
asdf 1
aaaa 1
aaaa 0
asdf 1
aaaa 1

Пожалуйста, предложите, что может быть не так в моем коде

Кстати, если я уберу тасование, я не смогу перейти к другой строке, итератор выведет только:

aaaa 0
aaaa 0 
aaaa 0
...

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

1 Ответ

0 голосов
/ 14 апреля 2019

Вот как я это использую.

next = iterator.get_next()
# print(next)

with  tf.Session() as sess:
    print(sess.run(next))
    print(sess.run(next))
    print(sess.run(next))
    print(sess.run(next))
    print(sess.run(next))
    print(sess.run(next))
    print(sess.run(next))
    print(sess.run(next))


(b'aaaa', 1)
(b'asdf', 0)
(b'aaaa', 1)
(b'aaaa', 1)
(b'asdf', 0)
(b'aaaa', 1)
(b'aaaa', 1)
(b'aaaa', 1)
...