【发布时间】:2018-09-12 16:49:37
【问题描述】:
我有一个 416x416 的输入图像。如何创建 4 x 10 的输出,其中 4 是列数,10 是行数?
我的标签数据是 4 列 10 行的二维数组。
我知道reshape() 方法,但它要求生成的形状具有与输入相同数量的元素。
使用 416 x 416 输入大小和最大池层数,我可以获得最大 13 x 13 输出。
有没有办法在不丢失数据的情况下实现4x10 输出?
我的输入标签数据看起来像例如
[[ 0 0 0 0]
[ 0 0 0 0]
[ 0 0 0 0]
[ 0 0 0 0]
[ 0 0 0 0]
[ 0 0 0 0]
[ 0 0 0 0]
[116 16 128 51]
[132 16 149 52]
[ 68 31 77 88]
[ 79 34 96 92]
[126 37 147 112]
[100 41 126 116]]
这表示我要检测的图像上有 6 个对象,第一个值是 xmin,第二个 ymin,第三个 xmax,第四个 ymax。
我的网络的最后一层看起来像
(None, 13, 13, 1024)
【问题讨论】:
-
卷积的输出通常是
(batch_size, height, width, kernels)格式的4-rank张量。我可以看到高度和宽度是 13,但是你有多少内核? 4 是您的batch_size,还是要将单个样本转换为 4 个不同的样本? -
抱歉,输出是 13 x 13 x 1024。标签的形状是 4x 10 ,每个列代表一个边界框。所以我最多检测到 10 个盒子。我的训练批次大小是 5。
-
你有
13 * 13 * 1024 = 173056号码可以重塑为4 * 10 = 40。我想说在不丢失数据的情况下重塑这是不可能的。你想做什么?您能否举例说明您的标签数据是什么样的? -
我将更新 m queston 例如我的标签数据
-
所以你想回归值
(xmin, ymin, xmax, ymax)?重塑后你在想什么?
标签: python neural-network keras artificial-intelligence conv-neural-network