Python 从100x100 pytorch张量获得一个10x10的补丁,边界周围有环面样式的环绕
如何从100x100 pytorch张量中获得10x10面片,并附加一个约束条件,即如果面片超出阵列的边界,则它将环绕边缘(就像阵列是一个圆环,顶部与底部相连,左侧与右侧相连) 我写了这段代码来完成这项工作,我正在寻找更优雅、高效和清晰的东西:Python 从100x100 pytorch张量获得一个10x10的补丁,边界周围有环面样式的环绕,python,arrays,pytorch,slice,Python,Arrays,Pytorch,Slice,如何从100x100 pytorch张量中获得10x10面片,并附加一个约束条件,即如果面片超出阵列的边界,则它将环绕边缘(就像阵列是一个圆环,顶部与底部相连,左侧与右侧相连) 我写了这段代码来完成这项工作,我正在寻找更优雅、高效和清晰的东西: def shift_矩阵(a,距离)->张量: x、 y=距离 a=火炬。cat((a[x:],a[0:x]),dim=0) a=火炬。cat((a[:,y:,a[:,:y]),dim=1) 归还 def随机移位矩阵(a)->张量: 返回移位矩阵(a,n
def shift_矩阵(a,距离)->张量:
x、 y=距离
a=火炬。cat((a[x:],a[0:x]),dim=0)
a=火炬。cat((a[:,y:,a[:,:y]),dim=1)
归还
def随机移位矩阵(a)->张量:
返回移位矩阵(a,np.random.randint(低=0,高=a.size())
def random_面片(a,大小)->张量:
全移位矩阵=随机移位矩阵(a)
返回全移位矩阵[0:size[0],0:size[1]]
我觉得带负指数片的东西应该可以用。不过我还没找到
你可以。你要找的
def random_patch(a,大小)->张量:
移位=np.random.randint(低=0,高=a.size())
返回火炬。滚动(a,移位=移位,dims=(0,1))[:大小[0],:大小[1]]
我确实在找这个。您知道是否有任何方法可以避免滚动整个阵列,而只是拉出其中的一个子集?