【发布时间】:2019-06-11 13:29:20
【问题描述】:
您好,我有以下代码用完索引。如何修复可以解决超出范围错误的矩阵的索引。
我已尝试修改过滤器范围。但这并不走运。
Filters = range(0,32)
for j in MapSizes:
if MapSizes[j] == 32:
LayerMapInference[j] = repmat(np.array(MapInference, 8,8, len(Filters[j][3]),Batchsize))
elif MapSizes[j] == 16:
LayerMapInference[j] = repmat(np.array(MapInference, 4,4, len(Filters[j][3]),Batchsize))
elif MapSizes[j] == 8:
LayerMapInference[j] = repmat(np.array(MapInference, 2,2, len(Filters[j][3]),Batchsize))
等效的Matlab代码:
if MapSizes(j) == 32
LayerMapInference{j} = repmat(MapInference,8,8,size(Filters{j},3),BatchSize);
elseif MapSizes(j) == 16
LayerMapInference{j} = repmat(MapInference,4,4,size(Filters{j},3),BatchSize);
elseif MapSizes(j) == 8
LayerMapInference{j} = repmat(MapInference,2,2,size(Filters{j},3),BatchSize);
end
请告诉我如何解决此错误。
使用 np.tile 的解决方案导致相同的错误
for j in MapSizes:
if MapSizes[j] == 32:
LayerMapInference[j] = np.tile(MapInference, 8,8, Filters[j].shape[2],Batchsize)
elif MapSizes[j] == 16:
LayerMapInference[j] = np.tile(MapInference, 4,4, Filters[j].shape[2],Batchsize)
elif MapSizes[j] == 8:
LayerMapInference[j] = np.tile(MapInference, 2,2, Filters[j].shape[2],Batchsize)
【问题讨论】:
-
Filters[j][3]不起作用,因为它是一维列表。你需要Filters[j]没有[3] -
@Sheldore 是的,您可以索引范围对象。
-
@Selcuk :在这种情况下,错误很明显,它来自一维列表的双索引
-
你能解释一下你想做什么吗?
-
什么是
MapSizes?np.array(MapInference, 8,8, len(Filters[j][3])应该做什么?np.array的第二个参数应该是dtype,而不是像8这样的数字。repmat是什么?