我只希望在keras中连接选定的通道,但是当我这样做时,它显示为错误。
我试图获取感兴趣的通道,并使用连接功能合并两个输出。
def cifar10ClassifierTransfer(input_img, conv2_high):
# Add additional inputs to
conv1_1 = (Conv2D(32, (3,3), padding='same', kernel_regularizer=regularizers.l2(weight_decay), input_shape=x_train.shape[1:], activation='elu'))(input_img)
conv1_2 = BatchNormalization()(conv1_1)
conv2_1 = (Conv2D(32, (3,3), padding='same', activation= 'elu',kernel_regularizer=regularizers.l2(weight_decay)))(conv1_2)
conv2_high = conv2_high[:,:,:,[1,2,3]]
concat_layer = keras.layers.merge.Concatenate(axis=3)([conv2_1,conv2_high])
flat = Flatten()(concat_layer)
out = Dense(num_classes, activation='softmax')(flat)
return out
我希望渠道数量会增加。如果我未指定要合并的频道,则可以正常工作,但是当我选择频道时,会出现以下错误
TypeError: Only integers, slices (`:`), ellipsis (`...`), tf.newaxis (`None`) and scalar tf.int32/tf.int64 tensors are valid indices, got [1, 2, 3]
我们如何选择我要连接的渠道,而不是将所有东西都串联?
答案 0 :(得分:0)
您可以使用错误指示的切片。
db.skillmatrix.hasMany(db.writers,{sourceKey: 'writerId', foreignKey: 'writerId'});
可以重写为:
conv2_high
您也可以使用tf.gather_nd
,但是上面的方法是更易读的IMO。