了解Tensorflow对象检测模型的INDArray维度重塑



试图将Tensorflow训练的模型加载到Deeplearning4J中,但出现以下错误:

IllegalStateException: Invalid array shape: cannot associate an array with shape [38880] with a placeholder of shape [-1, -1, -1, 3]:shape is wrong rank or does not match on one or more dimensions
var arr: INDArray = Nd4j.create(data) //.reshape(1, -1, -1, 3);
arr = Nd4j.pile(arr, arr)
sd.associateArrayWithVariable(arr, sd.variables.get(0))

Python模型是这样加载的:

# Load image using OpenCV and
# expand image dimensions to have shape: [1, None, None, 3]
# i.e. a single-column array, where each item in the column has the pixel RGB value
image = cv2.imread(PATH_TO_IMAGE)
image_expanded = np.expand_dims(image, axis=0)

如果你知道,请解释任何问题:

1( Python数组中[1,None,None

2( Python 中的np.exexpand_dims(image,axis=0(是什么意思

3( 深度学习4J重塑(1,-1,-1,3(;

这里混合了两个不同的概念,TF占位符和类似于命令式numpy的整形。

在您的情况下,模型期望4D输入张量,形状为[-1,-1,-1,3]。对于人类来说,它可以被翻译为[Any,Any,Any]。但你试图用形状为[38.880]、秩为1的张量来填充它。

现在回答您的问题。

1( 请参见上文-1被视为"任意"。

2( 此函数添加1作为维度。即,如果您有[38.880],轴=0处的expand_dims将使其成为[138880]

3( 不,那是错误的。你不应该把它当作你的造型。您有一些图像,所以您应该指定图像的适当尺寸,即[1800600,3]。

相关内容

  • 没有找到相关文章

最新更新