Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.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
Tensorflow 如何通过tf.image\u摘要查看多个图像_Tensorflow - Fatal编程技术网

Tensorflow 如何通过tf.image\u摘要查看多个图像

Tensorflow 如何通过tf.image\u摘要查看多个图像,tensorflow,Tensorflow,问题-张力板上只显示一张图像 受此启发 以下是代码: 图像阅读器--- #-rsq:具有[fn l]对的随机洗牌队列 def img_读取器_jpg(rsq): fn,label=rsq.dequeue() img_b=tf.read_文件(fn) img_=tf.image.decode_jpeg(img_b,通道=3) img_f=tf.cast(img_,tf.float32) img_4=tf.expand_dims(img_f,0) 返回img_4,标签 #文件名和标签是预加载的 f

问题-张力板上只显示一张图像

受此启发

以下是代码:

图像阅读器---
#-rsq:具有[fn l]对的随机洗牌队列
def img_读取器_jpg(rsq):
fn,label=rsq.dequeue()
img_b=tf.read_文件(fn)
img_=tf.image.decode_jpeg(img_b,通道=3)
img_f=tf.cast(img_,tf.float32)
img_4=tf.expand_dims(img_f,0)
返回img_4,标签
#文件名和标签是预加载的
fv=tf.常数(fnames)
lv=tf.常数(ohl)
rsq=tf.RandomShuffleQueue(len(fnames),0[tf.string,tf.float32])
do_enq=rsq.enqueue_many([fv,lv])
#阅读
图像,标签=img\U阅读器\U jpg(rsq)
#测试:一些op
im\u t=tf.placeholder(tf.float32,shape=[None,30,30,3],name='img\u tensor')
lab\u t=tf.placeholder(tf.float32,shape=[None,2],name='lab\u tensor')
some_op=tf.add(im_t,im_t)
ims\u op=tf.图像摘要(“img”,im\u t)
#服务运营
初始化所有变量()
#运行它
使用tf.Session()作为sess:
summary_writer=tf.train.summary writer(summary_dir,graph_def=sess.graph_def)
打印“日志地址:”,汇总目录
sess.run(初始化操作)
sess.run(do_enq)
打印“rsq.size:”,rsq.size().eval()
对于X范围内的i(5):
打印“\ni:”,i
img_i,lab_i=sess.run([图像,标签])#读取图像-对吗?
打印“I:”,img_I.shape,“L:”,lab_I
馈送地址={
im\u t:img\u i
}
img2=sess.run([some_op],feed_dict=feed_dict)
#现在是总结部分
imss=sess.run(ims\u op,feed\u dict=feed\u dict)
#打印“imss”,imss
摘要作者。添加摘要(imss,i)
打印“rsq.size:”,rsq.size().eval()
总结_writer.close()
打印“ok”
以下是输出:

log at:/mnt/code/test\u 00/log/2016-01-09 17:10:37
面积:1225
i:0
I:(1,30,30,3)L:[1.0]
i:1
I:(1,30,30,3)L:[1.0]
i:2
I:(1,30,30,3)L:[0.1]
i:3
I:(1,30,30,3)L:[0.1]
i:4
I:(1,30,30,3)L:[0.1]
rsq.尺寸:1220
好啊
看起来不错

  • 交付了5对[图像标签]
  • 如果我取消注释打印“imss”,imss我可以看到5个不同的缓冲区,每个缓冲区都有自己的png图像
  • op图在TB中看起来正常
但是,TB中只有一个图像。我怀疑我错过了一些关于TF如何工作的重要信息。在图形执行时是什么导致了什么


第二个问题:我需要做什么才能看到结果,即TB中的img2=img+img?

你是对的,你只能看到一张图像。在每个for循环中调用一次image summary op,每次调用它时,都会传递一个映像

要想看到所有想要看到的图像,可以将这些图像编译成一个张量。如果我们参考TensorFlow API(链接总是会更改,所以请查找最新的链接)

tf.图像汇总(标记、张量、最大图像=3、集合=None、, 名称=无)

从TF 1.0.0开始,是这样的:

tf.summary.image(名称,张量,最大输出=3,集合=None)

把你的“多图像张量”放进去,把max_images设置为你拥有的图像数量,你应该能够看到TensorBoard中的所有图像


如果仍然存在问题,请告诉我。

从r0.12开始,
tf.image\u summary
已替换为


我做了“多图像张量”
image\u summary
——它确实有效。但我们并没有用多维张量来存储标量摘要——我们只是在每次训练迭代中写入当前标量。那么,为什么图像会有不同的行为呢?我会给你的答案打上“ok”的标记,因为它提供了一些解决方法。你说的对,图像有不同的行为。之所以可能如此,一个合乎逻辑的原因是,标量摘要的大小很小,而且很容易累积。如果要积累所有图像摘要,我可以想象摘要文件会相当大。如果您希望TensorBoard中有这样的功能,也许您可以在他们的GitHub上提出这个问题。那里的人会给出比我更好的答案。
tf.summary.image(name, tensor, max_outputs=3, collections=None)