tensorflow.keras.layers 中是否有方法可以在 运行 模型之前获取特定层的输出形状?

Is there a method in tensorflow.keras.layers to get the output shape of a specific layer before running the model?

我正在使用具有以下结构的 TensorFlow 后端使用 Keras 构建 CNN:

# Create the Second Model in Ensemble
    def createModel(self, model_input, n_outputs, first_session=True):
        
        if first_session != True:
            model = load_model('ideal_model.hdf5')
            
            return model
        
        # Define Input Layer
        inputs = model_input
    
        # Define Max Pooling Layer
        conv = MaxPooling2D(pool_size=(3, 3), padding='same')(inputs)
        
        # Define Layer Normalization Layer
        conv = LayerNormalization()(inputs)
    
        # Define Leaky ReLU Layer
        conv = LeakyReLU(alpha=0.1)(conv)
    
        # Define Dropout Layer
        conv = Dropout(0.2)(conv)
    
        # Define First Conv2D Layer
        conv = Conv2D(filters=64,
                      kernel_size=(3, 3),
                      activation='relu',
                      padding='same',
                      strides=(3, 2))(conv)
        conv = Dropout(0.3)(conv)
    
        # Define Second Conv2D Layer
        conv = Conv2D(filters=32,
                      kernel_size=(5, 5),
                      activation='relu',
                      padding='same',
                      strides=(3, 2))(conv)
        conv = Dropout(0.3)(conv)
    
        # Define Softmax Layer
        conv = Softmax(axis=1)(conv)

        # Define Reshape Layer
        conv = Reshape((conv._keras_shape[1]*conv._keras_shape[2]*conv._keras_shape[3],))(conv)
    
        # Define Sigmoid Dense Layer
        conv = Dense(64, activation='sigmoid')(conv)
    
        # Define Output Layer
        outputs = Dense(n_outputs, activation='softmax')(conv)
    
        # Create Model
        model = Model(inputs, outputs)
        
        model.summary()
        
        return model

目前,我 运行 遇到了一些麻烦,因为我正在尝试使用 Reshape 层来展平张量,并且我正在尝试避免对输出的维度进行硬编码如果可能,将上一层放入 Reshape 层。 (注意:Flatten层不被程序最终运行所在的FPGA中的内核支持,所以我不能使用它们。)上面的代码产生了以下错误:

AttributeError: 'Tensor' object has no attribute '_keras_shape'

发生这种情况是因为由于模型架构开头的 LayerNormalization 层,我不得不使用 tensorflow.keras.layers(而不是 keras.layers)导入层。

所以,我想知道是否有一种方法可以在编译模型之前在tensorflow.keras.layers中获取特定层的输出形状。

conv.shape 或者 tf.shape(conv)