系统信息
*我是否编写了自定义代码(而不是使用TensorFlow中提供的常用示例脚本):是的
*操作系统平台和分发(例如Linux Ubuntu 16.04):Ubuntu 18.04版
*移动的设备(例如iPhone 8、Pixel 2、Samsung Galaxy)(如果问题发生在移动设备上):不可以
*TensorFlow安装自(源代码或二进制):来源
*TensorFlow版本(使用下面的命令):1.10
*Python版本:3.6
*Bazel版本(如果从源代码编译):0.16.1
*GCC/编译器版本(如果从源代码编译):7.3.0
*CUDA/cuDNN版本:9.2 / 7.3版本
*GPU型号和内存:英伟达GTX 1070 ti
尊敬的先生们:
我正在努力寻找正确的方法来为CAPI中的SessionRun调用设置批处理大小。
我试图做的是在一个单一的SessionRun中将多个图像传递给CNN(VGG 16)。
我想知道哪种方法是正确的,并检索适当的相关输出值。
我也开始相信,一个SessionRun调用只能接受一个图像作为输入,所以一个正确的批处理输入只能通过多个SessionRun调用(例如在“for”循环中)来实现,每个调用都有一个图像。我说的对吗?对于一个单输入CNN,有没有一种方法可以在一个SessionRun调用中批处理多个图像?
我已经彻底搜索了你的文件,但我找不到任何证据,一个适当的指示如何做到这一点。
顺祝商祺
9条答案
按热度按时间hwazgwia1#
session.run
执行一个图形。一个图形可以有任意数量的输入图像作为其输入管道的一部分。通常,您将使用tf.data.Dataset
API来定义数据输入层,并为您的模型确定适当的批处理大小。人们可能会要求你把这个贴在stackoverflow之类的东西上,因为这可能不是最好的要求:)
k2arahey2#
就我个人而言,我也认为文档缺少关于如何正确执行批处理推理步骤的指示。
@sabhiram,您指出模型必须有一个允许多个输入的输入管道,但我使用的是单个图像输入层(因为我在Keras上使用的是完全相同的模型),我相信我应该能够在该网络上执行批处理推理。
如果我在循环中使用SessionRun(在同一个图形上),我是否会引入一个开销,这是因为每次在gpu上加载一个图像和一个图形所需的开销时间造成的?
谢谢大家的关注。
由于我个人认为文档缺少一些信息,这个地方应该是要求答案的正确地方:)
8cdiaqws3#
我真的需要这个问题的帮助,因为它阻碍了我的工作(我在文档中没有找到任何建议)。
我试过这些伪代码:(调用这些代码SISO =单输入单输出,而MIMO =多输入多输出,输入是batch_size * 50 * 50 * 3,在SISO中batch_size = 1,在MIMO中batch_size = 3;请记住,我使用的是VGG 16图表)
SISO:
对于SISO,我总是有正确的输出。
多输入多输出:
对于MIMO,只有第一个分类输出值是正确的,其它都是随机数。
这段代码有什么问题?
nwwlzxa74#
@EnricoGiordano1992您不应该在此行中使用
data[i+1]
:ybzsozfc5#
@wt-huang好像有什么东西变了,但是我的输出不对。
输入Tensor设置怎么样?有什么问题吗?
km0tfn4u6#
有什么建议吗?
wtlkbnrh7#
有什么建议吗?
iyfamqjs8#
有什么进展吗?
qojgxg4l9#
这方面有什么新进展吗?2我工作也是如此