Deep learning 连体网络的线性变换

Deep learning 连体网络的线性变换,deep-learning,pca,autoencoder,cnn,siamese-network,Deep Learning,Pca,Autoencoder,Cnn,Siamese Network,我有一个连体神经网络,我想对提取的图像应用线性变换 使用PCA或自动编码器降低维度的功能。 在展平层之后如何实现它 这是我的代码: input_a = Input(shape=(input_shape)) input_b = Input(shape=(input_shape)) # Convolutional Neural NetworK seq = Sequential() seq.add(Conv2D(32, (5,5), activation='

我有一个连体神经网络,我想对提取的图像应用线性变换 使用PCA或自动编码器降低维度的功能。 在展平层之后如何实现它

这是我的代码:

    input_a = Input(shape=(input_shape))
    input_b = Input(shape=(input_shape)) 

    # Convolutional Neural NetworK
    seq = Sequential()
    seq.add(Conv2D(32, (5,5), activation='relu',padding='same',input_shape=input_shape,
      kernel_initializer=initializers.RandomNormal(mean=0.0 ,stddev=0.1, seed=None),bias_initializer= initializers.Zeros()))
    seq.add(MaxPooling2D(pool_size=(2,2) ,strides=(2,2)))
    seq.add(Conv2D(64, (5,5), activation='relu',padding='same',
           kernel_initializer=initializers.RandomNormal(mean=0.0 ,stddev=0.1, seed=None),bias_initializer= initializers.Zeros()))
    seq.add(MaxPooling2D(pool_size=(2,2),strides=(2,2)))    
    seq.add(Flatten())
    

    processed_a = seq(input_a)
    processed_b = seq(input_b)
    #here i want to preform linear transformation

    L2_distance = Lambda(euclidean_distance, output_shape=eucl_dist_output_shape,name='L2')([processed_a, processed_b])    
    a = Lambda(function,output_shape=eucl_dist_output_shape,name='out1')(L2_distance)
   

    model = Model([input_a, input_b],a)

要在暹罗神经网络末端添加线性变换层,或者更好地说是在其编码器末端添加线性变换层,您可以执行以下两个步骤:

  • 您需要构建一个自定义图层。可以使用以下选项并删除偏差项:
  • 您需要在seq.add(flatte())之后添加该层

  • 要在暹罗神经网络末端添加线性变换层,或者更好地说是在其编码器末端添加线性变换层,您可以执行以下两个步骤:

  • 您需要构建一个自定义图层。可以使用以下选项并删除偏差项:
  • 您需要在seq.add(flatte())之后添加该层

  • 你找到解决办法了吗?你找到解决办法了吗?