Я использую tenorflow 1.14 и у меня проблема с набором данных.

Мой код:

my_data = [
    [0, 1],
    [2, 3],
    [4, 5],
    [6, 7]
]

slices = tf.data.Dataset.from_tensor_slices(my_data) # get dataset
it = slices.make_one_shot_iterator() # get iterator from dataset (deprecated)
next_item = it.get_next()

Он говорит, что make_one_shot_iterator устарел ..

Поэтому я попробовал следующие коды

my_data = [
    [0, 1],
    [2, 3],
    [4, 5],
    [6, 7]
]

slices = tf.data.Dataset.from_tensor_slices(my_data) # get dataset
for q in slices:
    print(sess.run(q))

Сразу же я получил исключение NotFoundError.

Мой вопрос: как правильно перебрать набор данных?

4
user3681105 3 Июл 2019 в 04:06

3 ответа

Лучший ответ

Попробуй это:

import tensorflow as tf
my_data = [
    [0, 1],
    [2, 3],
    [4, 5],
    [6, 7]
]
n = len(my_data)
slices = tf.data.Dataset.from_tensor_slices(my_data) # get dataset
iterator = slices.make_initializable_iterator()

with tf.Session() as sess:
    sess.run(iterator.initializer)
    while n>0:
        print(sess.run(iterator.get_next()))
        n-=1

Если выше все еще отображается сообщение deprecation, попробуйте следующий код:

import tensorflow as tf
tf.enable_eager_execution()

my_data = [
    [0, 1],
    [2, 3],
    [4, 5],
    [6, 7]
]
slices = tf.data.Dataset.from_tensor_slices(my_data) # get dataset
for i in slices:
    print(i.numpy())

Выход:

[0 1]
[2 3]
[4 5]
[6 7]
0
Anubhav Singh 3 Июл 2019 в 04:52

Из документации tf.data.Dataset вы можете сделать простой цикл с:

for element in my_dataset: 
   print(element)

Как вы можете видеть на изображении, это возвращает tf.Tensor. Если вы хотите простой кортеж, вы можете использовать:

for element in my_dataset.as_numpy_iterator(): 
   print(element)

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

enter image description here

0
Geid 21 Янв 2020 в 13:27
import tensorflow as tf
my_data = [
    [0, 1],
    [2, 3],
    [4, 5],
    [6, 7]
]

slices = tf.data.Dataset.from_tensor_slices(my_data) # get dataset
q = slices.make_one_shot_iterator().get_next()
with tf.Session() as sess:
    for i in range(len(my_data)):
        print('-----')
        print(sess.run(q))

Код выше производит введите описание изображения здесь

0
guorui 3 Июл 2019 в 03:24