我最近开始学习Tensorflow,特别是我想使用卷积神经网络进行图像分类。我一直在看官方存储库中的android演示,特别是这个例子: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它没有任何区别,但我想这个符号必须有一个理由而且我不理解它。
答案 0 :(得分:4)
Tensorflow适用于批量图像。
因此,模型接受一批图像,每个图像的形状为inputSize x inputSize x 3
。
1
是批量大小。因此,在实践中,您正在为网络提供一个具有单个图像的批处理,该图像具有形状1 x inputSize x inputSize x 3
的张量