상수 모드에서 theano에 numpy 패드 함수를 구현하려고합니다. 어떻게 numpy로 구현됩니까? 그 패드 값은 그냥이 사전의 크기의 수를 알고 있다면 이제numpy 패드 구현 방법 (상수 값)
array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 1, 2, 3, 4, 0, 0, 0, 0],
[0, 0, 0, 5, 6, 7, 8, 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]])
을 반환 배열
a = np.array([[1,2,3,4],[5,6,7,8]])
# pad values are just 0 as indicated by constant_values=0
np.pad(a, pad_width=[(1,2),(3,4)], mode='constant', constant_values=0)
을 감안할 때 0이
, 난 그냥 작성하여이를 구현할 수있는 가정 새 차원의 새 배열이 패드 값을 채우고이 배열의 해당 요소를 채 웁니다. 하지만 입력 배열의 크기를 모르는 경우에는 어떻게해야합니까? 입력 배열에서 출력 배열의 크기를 추측 할 수는 있지만 그 안에있는 차원의 수를 모른 채 색인을 생성 할 방법이 없습니다. 또는 나는 무엇인가 놓치고 있냐? I는 입력 차원, 3 말 것을 알고있는 경우이다
후 I는 할 수 : 제로 어레이 출력 크기로 만든 새로운 배열
zeros_array[pad_width[0][0]:-pad_width[0][1], pad_width[1][0]:-pad_width[1][1], pad_width[2][0]:-pad_width[2][1]] = a
.
그러나 손을 ndim 몰라, 나는 이것을 할 수 없습니다. 환언
def ...(arg, pad):
out_shape = <arg.shape + padding> # math on tuples/lists
idx = [slice(x1, x2) for ...] # again math on shape and padding
res = np.zeros(out_shape, dtype=arg.dtype)
res[idx] = arg # may need tuple(idx)
return res
대상 배열을 확인하고 해당 색인 튜플로 입력을 복사
'np.pad'의 출처는 다음과 같습니다. https://github.com/numpy/numpy/blob/master/numpy/lib/arraypad.py – jmilloy