2017-06-20 42 views
1

我最近开始学习Tensorflow,特别是我想用卷积神经网络进行图像分类。我一直在寻找在官方仓库的机器人演示,特别是这个例子:https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/android/src/org/tensorflow/demo/TensorFlowImageClassifier.java什么是TensorFlow中图像张量的形状

线145,它创建与图像的输入数据的张量,因为这样的:

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

现在,我一直在试图理解这是干什么的,最后调用这个方法:Tensor.create。我不明白的是为什么由该函数的输入参数(也称为“尺寸”)给出的张量的形状为{1, inputSize, inputSize, 3}。第二和第三维是图像的宽度和高度,第四维是图像的RGB数据。但为什么它的第一个维度是1?这个张量的形状不应该是{inputSize, inputSize, 3}而是?我想因为维度是1,所以没有区别,但我想这必须有一个符号的理由,我不理解它。

回答

3

Tensorflow适用于多批图像。 该模型因此接受一批形状为inputSize x inputSize x 3的图像。

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

+0

这就是tensorflow特有的东西,对吗?神经网络仍然有'inputize x inputsize x 3'的输入,所以如果第一维度不是1,神经网络将被执行多次,我们会得到多个预测? –

+0

是的,这对于tensorflow是特别的。该模型已经使用批量图像进行了训练,因此网络已被定义为接受一批图像并行执行预测。网络输入实际上是[[None,inputSize,inputSize,3]'。凡None表示从1到无穷大的每个值。 因此,您可以输入单个(批量为1的批次)或多个图像(批量的大小> 1)并获得一批预测,每个输入图像一个 – nessuno

+0

好的,谢谢,我会更多地关注学习张量流特性:D。 –

相关问题