[英]How to iterate over a tf.dataset, without deprecated functions?
I'm using tensorflow 1.14 and have a problem with dataset.我正在使用 tensorflow 1.14 并且数据集有问题。
my code:我的代码:
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()
It says make_one_shot_iterator is deprecated..它说不推荐使用 make_one_shot_iterator ..
So i tried following codes所以我尝试了以下代码
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))
Immediately i got NotFoundError exception.我立即收到 NotFoundError 异常。
My question: What is the proper way to iterate over a dataset?我的问题:迭代数据集的正确方法是什么?
Try this:尝试这个:
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
If above still showing deprecation
message, then try below code:如果上面仍然显示
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())
output:输出:
[0 1]
[2 3]
[4 5]
[6 7]
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))
From the documentation of tf.data.Dataset you can do a simple loop with:从tf.data.Dataset的文档中,您可以执行一个简单的循环:
for element in my_dataset:
print(element)
As you can see in the image, this returns a tf.Tensor
.正如您在图像中看到的,这将返回一个
tf.Tensor
。 If you want a simple tuple you can use:如果你想要一个简单的元组,你可以使用:
for element in my_dataset.as_numpy_iterator():
print(element)
If each entry of your dataset has more than one element you can index the contents of the tuple with []
like normally.如果数据集的每个条目都有多个元素,您可以像往常一样用
[]
索引元组的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.