Chaning输出层的顺序

时间:2018-04-11 11:52:31

标签: python neural-network keras conv-neural-network

我使用keras建立了CNN。

我的输出形状:

[[a1,b1,c1,d1],
 [a2,b2,c2,d2],
 [a3,b3,c3,d3]
]

但是有一种方法可以重新排列输出层,因此输出将是

[[a2,b2,c2,d2],
 [a1,b1,c1,d1],
 [a3,b3,c3,d3]
]

鉴于,我已经有了前一个输出? CNN输出第一个例子,然后我希望它重新排列输出第二个例子。

我的CNN以

结尾
x = Conv2D(1024, (3,3), strides=(1,1), padding='same', name='conv_22', use_bias=False)(x)
x = BatchNormalization(name='norm_22')(x)
x = LeakyReLU(alpha=0.1)(x)
x = Flatten()(x)
x = Dense(15 * 4, activation='relu')(x)
x = LeakyReLU(alpha=0.1)(x)
x = Reshape((15, 4), name='predictions')(x)

1 个答案:

答案 0 :(得分:0)

警告:请注意,模型将始终将input1与ouput1进行比较; input2 with output2;等等。这是无法改变的Keras行为。

您可以使用K.gather()重新排序第一个维度。

import keras.backend as K

reorder = [1,0,2] #the order of the indices, according to your example

reorderingLayer = Lambda(lambda x: K.gather(x,reorder))