使用合并仅合并keras中的某些通道

时间:2019-04-25 22:31:29

标签: python-3.x tensorflow keras

我只希望在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]

我们如何选择我要连接的渠道,而不是将所有东西都串联?

1 个答案:

答案 0 :(得分:0)

您可以使用错误指示的切片。

db.skillmatrix.hasMany(db.writers,{sourceKey: 'writerId', foreignKey: 'writerId'}); 可以重写为:

conv2_high

您也可以使用tf.gather_nd,但是上面的方法是更易读的IMO。