一个tf变量,由多个形状可能不同的三维矩阵组成,例如[3,3,9],[5,5,9],所有三维矩阵的最后一维长度确定。如何在保持变量其他均保持不变的情况下,将变量最后一维变为二维矩阵,从[9]->[3,3]
这个变量是四维的。
例子:
可以考虑使用 reshape 方法噢,reshape(9)即可
用 reshape 函数试试看,比如:
a=np.arange(81)
b=a.reshape((3,3,9)) # 三维矩阵
c=b.reshape((3,3,3,3)) # 前两维不变,后面一维变二维
a=np.random.randint(1,100,(2,2,9))
b=np.random.randint(1,100,(7,7,9))
c=np.random.randint(0,100,(4,4,9))
x=[a,b,c]
def cc(tmp):
s=list(tmp.shape[:-1])+[3,3]
return tmp.reshape(s)
k=list(map(cc,x))
k=np.array(k) #k就是结果
for i in k:
print(i.shape)
处理结果如下:
(2, 2, 3, 3)
(7, 7, 3, 3)
(4, 4, 3, 3)