【问题标题】:What is the shape of an image tensor in TensorFlowTensorFlow中图像张量的形状是什么
【发布时间】:2017-11-22 13:43:58
【问题描述】:

我最近开始学习 Tensorflow,特别想使用卷积神经网络进行图像分类。我一直在看官方仓库中的android demo,特别是这个例子:https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/android/src/org/tensorflow/demo/TensorFlowImageClassifier.java

在第 145 行,它使用图像的输入数据创建一个张量,如下所示:

inferenceInterface.feed(inputName, floatValues, 1, inputSize, inputSize, 3);

现在,我一直试图了解这是在做什么,它最终调用了这个方法:Tensor.create。我不明白的是为什么这个函数的输入参数(也称为“维度”)给出的这个张量的形状是{1, inputSize, inputSize, 3}。第二维和第三维是图像的宽高,第四维是图像的RGB数据。但为什么它的第一个维度为 1?这个张量的形状不应该是{inputSize, inputSize, 3}吗?我想既然维度是 1 就没什么区别了,但是我想这个符号肯定是有原因的,我不明白。

【问题讨论】:

  • 是pytorch中的标准[B, C, H , W]还是其他一些(任意顺序)?

标签: tensorflow tensor


【解决方案1】:

Tensorflow 可以处理批量图像。 因此,该模型接受一批图像,每个图像的形状为 inputSize x inputSize x 3

1 是批量大小。因此,在实践中,您正在为网络提供一批具有单个图像的图像,该图像是形状为1 x inputSize x inputSize x 3的张量@

【讨论】:

  • 这是 tensorflow 特有的东西,对吧?神经网络仍然有inputsize x inputsize x 3的输入,所以如果第一个维度不是1,那么神经网络会执行不止一次,我们会得到多个预测?
  • 是的,这是 tensorflow 特有的。该模型已经使用批量图像进行了训练,因此网络已被定义为接受批量图像并并行执行预测。网络输入实际上是[None, inputSize, inputSize, 3]。其中None 表示从 1 到无穷大的每个值。因此,您可以将单个(大小为 1 的批次)或多个图像(大小 >1 的批次)作为输入,并获得一批预测,每个输入图像一个预测
  • 好的,谢谢,我会进一步研究以了解 tensorflow 的特性:D.
  • 是pytorch中的标准[B, C, H , W]还是其他一些(任意顺序)?
  • @CharlieParker 我不明白你的问题。如果您问 pytorch 是否使用 [B,C,H,W],那么是的,这是真的。 TensorFlow 使用 [B, H, W, C] 代替
猜你喜欢
  • 1970-01-01
  • 2019-10-12
  • 1970-01-01
  • 2016-05-14
  • 1970-01-01
  • 2018-08-08
  • 2018-02-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多