在keras中交换张量轴

时间:2017-01-26 16:17:19

标签: tensorflow keras

我想将图像批次的张量轴从(batch_size,row,col,ch)交换到 (batch_size,ch,row,col)。

在numpy中,可以使用

完成
X_batch = np.moveaxis( X_batch, 3, 1)

我怎么会在Keras那样做?

2 个答案:

答案 0 :(得分:14)

您可以使用与K.permute_dimensions()完全相似的np.transpose()

示例:

import numpy as np 
from keras import backend as K 

A = np.random.random((1000,32,64,3))
# B = np.moveaxis( A, 3, 1)
C = np.transpose( A, (0,3,1,2))

print A.shape
print C.shape

A_t = K.variable(A)
C_t = K.permute_dimensions(A_t, (0,3,1,2))

print K.eval(A_t).shape
print K.eval(C_t).shape

答案 1 :(得分:0)

使用keras.layers.Permute(dims),其中dims does not include the samples dimension

model.add(Permute((2, 1), input_shape=(10, 64)))