【问题标题】:Why does Keras model.summary() not work for my model?为什么 Keras model.summary() 不适用于我的模型?
【发布时间】:2021-06-22 12:08:57
【问题描述】:

我编写了以下 Keras §model:

input = Input(shape=(train.shape[1:]))


x = layers.Conv1D(filters=32, padding="valid", activation="relu", strides=1, kernel_size=1)(input)
x = layers.Conv1D(filters=32, padding="valid", activation="relu", strides=1, kernel_size=1)(x)
x = layers.Conv1D(filters=32, padding="valid", activation="relu", strides=1, kernel_size=1)(x)
x = layers.GlobalMaxPooling1D()(x)



x = layers.Dense(1024, activation="relu")(x)
x = layers.Dropout(0.1)(x)
x = layers.Dense(1024, activation='relu')(x)
x = layers.Dropout(0.1)(x)


predictions = layers.Dense(1,kernel_initializer='normal')(x)

model = tf.keras.Model(inputs=[protein_input], outputs=[predictions])
plot_model(model,"model.png", show_dtype=True, show_shapes=True, show_layer_names=True)

model.summary()

生成此表:

_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
Total params: 1,086,593
Trainable params: 1,086,593
Non-trainable params: 0
_________________________________________________________________

plot_model() 也不会生成图表。

模型编译,我可以运行model.fit

model.compile(loss=tf.keras.losses.MeanSquaredError(), optimizer="adam", metrics=['mean_absolute_error'])

epochs=100

history = model.fit(x=[train],y=log_training_Kd_labels,
                                validation_data=([val],log_validation_Kd_labels),
                                epochs=epochs,
                                batch_size=100) 

但我不确定是否正在进行任何学习。谁能告诉我为什么会这样?

【问题讨论】:

    标签: python tensorflow machine-learning keras deep-learning


    【解决方案1】:

    您可能正在混合使用 keras 和 tensorflow 库。由于 Tensorflow 实现了 keras 库,因此在导入 keras 和 tensorflow 并随机使用它们的开发人员之间这是一个常见的错误,这会导致一些奇怪的行为。

    只需在整个代码中使用import tensorflow.kerasimport keras

    例如,如果我这样编码(随机使用两个库):

    import keras                                #import keras
    import tensorflow as tf
    from tensorflow.keras.layers import Dense   #import layers from tensorflow.keras
    from tensorflow.keras import Input
    
    input = Input(shape = (20,))
    x = Dense(30, name = 'dense1')(input)
    x = Dense(20, name = 'dense2')(x)
    output = Dense(1)(x)
    model = keras.models.Model(inputs = input ,outputs = output)
    model.compile(loss = 'mse', optimizer = 'adam')
    model.summary()
    

    输出将是:

    Model: "model"
    _________________________________________________________________
    Layer (type)                 Output Shape              Param #   
    =================================================================
    Total params: 1,271
    Trainable params: 1,271
    Non-trainable params: 0
    _________________________________________________________________
    

    但如果我修改导入并只使用tensorflow.keras 而不是像这样使用keras

    import tensorflow as tf
    from tensorflow.keras.layers import Dense
    from tensorflow.keras import Input
    from tensorflow.keras.models import Model
    
    input = Input(shape = (20,))
    x = Dense(30, name = 'dense1')(input)
    x = Dense(20, name = 'dense2')(x)
    output = Dense(1)(x)
    model = Model(inputs = input ,outputs = output)
    model.compile(loss = 'mse', optimizer = 'adam')
    model.summary()
    

    我会得到这样的输出:

    Model: "model"
    _________________________________________________________________
    Layer (type)                 Output Shape              Param #   
    =================================================================
    input_3 (InputLayer)         [(None, 20)]              0         
    _________________________________________________________________
    dense1 (Dense)               (None, 30)                630       
    _________________________________________________________________
    dense2 (Dense)               (None, 20)                620       
    _________________________________________________________________
    dense_2 (Dense)              (None, 1)                 21        
    =================================================================
    Total params: 1,271
    Trainable params: 1,271
    Non-trainable params: 0
    _________________________________________________________________
    

    【讨论】:

      猜你喜欢
      • 2019-07-12
      • 2020-03-15
      • 2021-11-13
      • 2022-08-17
      • 1970-01-01
      • 2018-04-24
      • 1970-01-01
      • 2019-11-10
      相关资源
      最近更新 更多