Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.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 在Tensorflow中,是否存在接受(文件名)张量并输出图像的op/ops?_Python_Tensorflow - Fatal编程技术网

Python 在Tensorflow中,是否存在接受(文件名)张量并输出图像的op/ops?

Python 在Tensorflow中,是否存在接受(文件名)张量并输出图像的op/ops?,python,tensorflow,Python,Tensorflow,我希望能够阅读成批的图像。但是,这些批处理必须由python脚本构建(由于各种原因,不能提前将它们放入文件中)。在tensorflow中,执行以下操作的最有效方式是什么: (1) 提供:指向图像的B个可变长度字符串的python列表,所有字符串的大小都相同。B是批量大小。 (2) 对于每个字符串,加载其对应的图像,并应用5%的随机裁剪(裁剪是随机的,但裁剪的大小是固定的) (3) 将图像连接在一起,形成一个大小为B x H x W x 3的张量 如果这是不可能的,是否有人有任何关于在python

我希望能够阅读成批的图像。但是,这些批处理必须由python脚本构建(由于各种原因,不能提前将它们放入文件中)。在tensorflow中,执行以下操作的最有效方式是什么:

(1) 提供:指向图像的B个可变长度字符串的python列表,所有字符串的大小都相同。B是批量大小。 (2) 对于每个字符串,加载其对应的图像,并应用5%的随机裁剪(裁剪是随机的,但裁剪的大小是固定的) (3) 将图像连接在一起,形成一个大小为B x H x W x 3的张量


如果这是不可能的,是否有人有任何关于在python中加载和预处理图像然后将其放入队列的效率损失的基准/数据?我假设如果在tensorflow内部完成图像加载/预处理,网络将运行得更快

如果将图像作为字节数组,则可以在图形中使用类似的内容:

 jpegs = tf.placeholder(tf.string, shape=(None))
 images = tf.map_fn(lambda jpeg : your_processing_fn(jpeg), jpegs,
                   dtype=tf.float32)
 logits = your_inference_model(images,labels)
其中,您的_processing_fn是一个函数,它接收字节的jpeg张量,对其进行解码、调整大小和裁剪,并返回一个H x W x 3的图像


您需要最新版本的tensorflow,因为map\u fn不在0.8及以下版本中。

这就是我如何理解您的问题:

  • 你有一些图像
  • 您有一个函数
    sample\u batch()
    ,它返回一批大小为
    B
  • 您希望读取与这些文件名对应的图像并对其进行预处理
  • 最后输出一批这些示例

input=tf.placeholder(tf.string,name='input')
queue=tf.FIFOQueue(容量,tf.string,[()],name='queue')
enqueue_op=queue.enqueue_many(输入)
reader=tf.WholeFileReader()
文件名,内容=reader.read(队列)
image=tf.image.decode_jpeg(内容,频道=3)
#预处理
image=tf.random_裁剪(图像[H,W,3])
image=tf.to_float(图像)
batch\u image=tf.train.batch([image],batch\u size=B,name='batch')
输出=推断(批处理图像)

然后在会话中,您必须使用
sample\u batch()
函数中的文件名运行排队操作:

将tf.Session()作为sess的
:
训练开始、排队、跑步者()
对于范围内的i(NUM_步数):
批处理文件名=样本批处理()
run(排队,提要={input:batch\u filenames})
sess.run(输出)

能否发布构建批处理的python脚本?我不清楚这个脚本到底要做什么:它是选择将哪些图像放入批处理,还是构造文件名或其他什么?生成批处理的脚本非常复杂,可能没有什么帮助。它必须存在的原因是数据的标签对应于训练示例之间的关系,而不是训练示例本身。脚本将确保该脚本被保留。因此,is通过以特定方式组合文件名组来“构造”批,然后计算适当的标签。