【问题标题】:Get input (filenames) from tensorflow dataset iterators从 tensorflow 数据集迭代器获取输入(文件名)
【发布时间】:2019-02-18 17:15:25
【问题描述】:

我正在使用 tensorflow 数据集来训练模型。数据集在会话期间获取文件名列表以读取它们,我想将文件名与图像一起获取。 更详细地说,我有这样的事情:

filenames = tf.constant(["/var/data/image1.jpg", "/var/data/image2.jpg", ...])
labels = tf.constant([0, 37, ...])
dataset = tf.data.Dataset.from_tensor_slices((filenames, labels))
dataset.shuffle()

def _parse_function(filename, label):
  image_string = tf.read_file(filename)
  image_decoded = tf.image.decode_jpeg(image_string)
  image_resized = tf.image.resize_images(image_decoded, [28, 28])
  return image_resized, label

dataset = dataset.map(_parse_function)
iterator = dataset.make_one_shot_iterator()
X, Y = iterator.get_next()

sess = tf.Session()
sess.run(iterator.initializer)
while True:
  sess.run(X) #Here I want the element from filenames being used for X

我以为iterator可以包含这些信息,但我找不到。

【问题讨论】:

  • 我不确定你的意思,这里X 将有当前文件名。
  • @jdehesa 抱歉,我太想简化代码,以至于我把它写得不完整。我现在编辑了它,X 是一个图像。

标签: python tensorflow iterator tensorflow-datasets


【解决方案1】:

您只需将文件名与数据集中的图像数据一起保留:

filenames = tf.constant(["/var/data/image1.jpg", "/var/data/image2.jpg", ...])
labels = tf.constant([0, 37, ...])
dataset = tf.data.Dataset.from_tensor_slices((filenames, labels))
dataset.shuffle()

def _parse_function(filename, label):
  image_string = tf.read_file(filename)
  image_decoded = tf.image.decode_jpeg(image_string)
  image_resized = tf.image.resize_images(image_decoded, [28, 28])
  return filename, image_resized, label

dataset = dataset.map(_parse_function)
iterator = dataset.make_one_shot_iterator()
F, X, Y = iterator.get_next()

sess = tf.Session()
sess.run(iterator.initializer)
while True:
  sess.run(F, X)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 2018-05-18
    • 1970-01-01
    • 2019-09-09
    • 1970-01-01
    • 2018-08-17
    • 1970-01-01
    相关资源
    最近更新 更多