问题描述 投票:0回答:0
从左到右,从左到右,每次移动

s

许多元素。
阵列
new_h = (h - k_h)//s + 1
new_w = (w - k_w)//s + 1
s_h, s_w = in.strides
new_shape = (new_h, new_w,k_h,k_w)
new_strides = (s_h * s, s_w * s, s_h, s_w)
strided_in = np.lib.stride_tricks.as_strided(in,new_shape, new_strides)
给出
(k_h, k_w)

我给出了形状的阵列。 我需要计算形状的数组
in
,每个条目都(几乎)给出:

s
I.E。对于每个块映射到
out
的每个块中,
out = np.max(strided_arr, axis = (2,3))

递增。 问题是

grad_out

可以重复的元素,这种方法将超越

最好用一个例子说明这个问题。
,我有基本阵列

out.shape

我有以下视图:
grad_in
我需要能够区分
in.shape
grad_in[i,j] = 0 for m, row in enumerate(strided_in): for n, block in enumerate(row): grad_in[i,j] += grad_out[m,n] * (np.max(block) == in[i,j])

我知道存在

grad_out[m,n]

存在,但是此功能是用于数组的,而不是数组的元素
	
我想出了一个非常刺耳的解决方案,但是它优化了,希望有人能提出更好的东西。我们做:
in[i,j]

我们保持数组结构,并能够将内存位置与

out

进行比较


numpy
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.