我在tf.keras
中训练了一个基于UNet的图像分割模型,该模型可以预测一个对象在给定图像中的位置和位置。我用(None, 256, 256, 1)
的输入形状训练,然后输出(None, 256, 256, 3)
形状的预测。你知道吗
我现在想要预测更大的图像(例如(520, 696)
),并且想要使用相同的模型。我知道可以将模型的输入形状更改为大小(None, None, None, 1)
。但是,现在它仍然只能预测正方形图像–对于上面提到的图像,它返回Dimensionality Error
,因为形状不匹配(520!= 696). 你知道吗
有没有人知道如何避免这种情况或有一个工作功能,以缝合在一起较小的正方形输出?你知道吗
出错步骤:
img = skimage.io.imread(X) # shaped (520, 696)
pred = model.predict(img[None,...,None])
InvalidArgumentError: _MklConcatOp : Dimensions of inputs should match: shape[0][1]= 64 vs. shape[1][1] = 65 [[{{node concatenate_4/concat}}]]
我找到了一个解决方案——因为我训练了一个UNet(在上采样后使用级联层),它只能合并2的幂(例如256/512)。因此,我必须在预测之前添加填充,使其达到下一个2的幂,并从输出中删除填充。你知道吗
相关问题 更多 >
编程相关推荐