首页 > 解决方案 > 在带有会话的图形模式下使用 tensorflow 数据集窗口操作时出错

问题描述

window我无法在图形模式下运行 tensorflow 数据集示例。这个

def test_window_graph_mode():
    tf.reset_default_graph()
    dataset = tf.data.Dataset.range(7).window(3, 2, 1, True)
    iterator = dataset.make_one_shot_iterator()
    next_element = iterator.get_next()

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

崩溃 - 而这

def test_window_graph_mode():
    tf.reset_default_graph()
    dataset = tf.data.Dataset.range(7)
    iterator = dataset.make_one_shot_iterator()
    next_element = iterator.get_next()

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

工作正常。错误是

TypeError: Fetch argument <_VariantDataset shapes: (), types: tf.int64> has invalid type <class 'tensorflow.python.data.ops.dataset_ops._VariantDataset'>, must be a string or Tensor. (Can not convert a _VariantDataset into a Tensor or Operation.)

这些例子没有展示make_one_shot_iteratorget_next——我是从谷歌搜索中找到的。在旧式图形模式 tensorflow 中使用 Window 是否还有其他接口?

标签: pythontensorflow

解决方案


如果您添加该行,您的代码可以正常工作,

dataset = dataset.flat_map(lambda x:x.batch(2))

行前,

iterator = dataset.make_one_shot_iterator()

完整的工作代码如下所示:

tf.reset_default_graph()
dataset = tf.data.Dataset.range(7).window(3, 2, 1, True)
dataset = dataset.flat_map(lambda x:x.batch(2))
iterator = dataset.make_one_shot_iterator()
next_element = iterator.get_next()

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

有关更多信息,请参阅此 Stack Overflow Issue1Issue2

希望这可以帮助。快乐学习!


推荐阅读