我使用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)
答案 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))