Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python &引用;tf.张量对象的嵌套结构“;对于Iterator.get_next()结果类型_Python_Tensorflow - Fatal编程技术网

Python &引用;tf.张量对象的嵌套结构“;对于Iterator.get_next()结果类型

Python &引用;tf.张量对象的嵌套结构“;对于Iterator.get_next()结果类型,python,tensorflow,Python,Tensorflow,当我编写Tensorflow代码时,我会尽量记住不同事物的类型,例如两个张量的元组或张量列表。这很重要,因为当类型/形状不匹配时,Tensorflow会发出错误 这个问题的标题文本在文档中显示了很多,特别是在描述某些函数的结果时,例如for,但我发现它太模糊了。它没有告诉我确切的期望是什么,一个元组列表?一个元组的元组?这个“嵌套结构”到底是什么?现在,我唯一可以跟踪的方法是在Session.run()之后打印结果。有没有更干净、更明确的方法 而且,Iterator.get_next()的值似乎

当我编写Tensorflow代码时,我会尽量记住不同事物的类型,例如两个张量的元组或张量列表。这很重要,因为当类型/形状不匹配时,Tensorflow会发出错误

这个问题的标题文本在文档中显示了很多,特别是在描述某些函数的结果时,例如for,但我发现它太模糊了。它没有告诉我确切的期望是什么,一个元组列表?一个元组的元组?这个“嵌套结构”到底是什么?现在,我唯一可以跟踪的方法是在Session.run()之后打印结果。有没有更干净、更明确的方法

而且,
Iterator.get_next()
的值似乎总是一个元素列表;我无法使它返回非列表、空列表或包含多个元素的列表。
Iterator.get_next()
何时返回非一个元素列表的内容?如果没有,那么在列表中包装内容似乎是多余的——为什么
Iterator.get\u next()
是这样设计的

这是示例代码,我的意思是:

import numpy as np
import tensorflow as tf

ds = tf.data.Dataset.from_tensor_slices(np.array(range(0, 8)).reshape(4,2))
it = ds.make_one_shot_iterator()

with tf.Session() as sess:
    for i in range(0, 4):
        x = sess.run([it.get_next()])
        print(x)
输出:

[array([0, 1])]
[array([2, 3])]
[array([4, 5])]
[array([6, 7])]
{'x': array([0, 1])}
{'x': array([2, 3])}
{'x': array([4, 5])}
{'x': array([6, 7])}
为什么不只是以下几点

array([0, 1])
array([2, 3])
array([4, 5])
array([6, 7])
您的“输出”与“为什么不只是以下内容?”的具体问题是通过将列表传递给
sess.run
。如果改用
sess.run(it.get_next())
您将获得所需的行为

请注意,TensorFlow允许您传入多个不同的结构(例如,列表、字典、namedtuples等),包括嵌套结构(请参阅)。它将按照您用来传递数据的相同结构返回数据

例如,使用字典:

import numpy as np
import tensorflow as tf

ds = tf.data.Dataset.from_tensor_slices(np.array(range(0, 8)).reshape(4,2))
it = ds.make_one_shot_iterator()

with tf.Session() as sess:
    for i in range(0, 4):
        x = sess.run({'x': it.get_next()}])
        print(x)
输出:

[array([0, 1])]
[array([2, 3])]
[array([4, 5])]
[array([6, 7])]
{'x': array([0, 1])}
{'x': array([2, 3])}
{'x': array([4, 5])}
{'x': array([6, 7])}
您的“输出”与“为什么不只是以下内容?”的具体问题是通过将列表传递给
sess.run
。如果改用
sess.run(it.get_next())
您将获得所需的行为

请注意,TensorFlow允许您传入多个不同的结构(例如,列表、字典、namedtuples等),包括嵌套结构(请参阅)。它将按照您用来传递数据的相同结构返回数据

例如,使用字典:

import numpy as np
import tensorflow as tf

ds = tf.data.Dataset.from_tensor_slices(np.array(range(0, 8)).reshape(4,2))
it = ds.make_one_shot_iterator()

with tf.Session() as sess:
    for i in range(0, 4):
        x = sess.run({'x': it.get_next()}])
        print(x)
输出:

[array([0, 1])]
[array([2, 3])]
[array([4, 5])]
[array([6, 7])]
{'x': array([0, 1])}
{'x': array([2, 3])}
{'x': array([4, 5])}
{'x': array([6, 7])}

可能是因为Tensorflow中的元组通常作为张量列表返回,迭代器支持嵌套结构?一个通用用例是tf.data.Dataset.from_tesnor_slice((数据,标签))可能是因为Tensorflow中的元组通常作为张量列表返回,迭代器支持嵌套结构?一个通用用例是tf.data.Dataset.from_tesnor_切片((数据,标签))