【发布时间】:2018-11-03 06:56:18
【问题描述】:
我发现很难在 numpy/pytorch 中可视化重塑 4D 5D 数组。 (我假设两者都以类似的方式重塑,我目前正在使用 pytorch!)。
假设我有尺寸为 [N x C x D x H x W] 的视频
(视频数 x 频道视频 x 视频帧数 x 高度视频 x 宽度视频)
假设我想将视频重塑为 [N x C x H x W] 的帧,我应该如何进行重塑。
简单地应用x = x.reshape(N*D, C, H, W) 实际上并没有这样做,它给出了错误的元素顺序。
你能帮助我如何做到这一点,以及你使用的模式的任何一点直觉吗?
在旁注中,如果我有一个视频(即假设我使用 1x3x100x256x256:
以下代码方法:
x = x.squeeze(0).T.reshape((100,3,256,256))[:,:,None,:,:]并且有效太棒了。无法找出超过 1 个视频。
谢谢!
根据要求:
input = np.random.randn(N,C,D,H,W)
output = np.zeros((N*D,C,H,W))
根据请求,一个基于 for 循环的代码来显示我想要的
for h in range(N):
for i in range(D):
for j in range(C):
for k in range(H):
for l in range(W):
output[h*D + i,j,k,l] = input[h,j,i,k,l]
【问题讨论】:
-
你能展示一个有效的循环代码吗?也许使用
x.squeeze(0).T.reshape((100,3,256,256))[:,:,None,:,:]存储到输出数组中? -
啊,你的意思是通过 for 循环重塑??
-
是的,一个使用循环的工作解决方案代码,只是为了让我们有一个参考。
-
@Divakar 给你 :),索引可能有点不正确,会检查,但你会得到我想要的