【问题标题】:Creating new Keras model by calling from an old (trained) one, new model summary is collapsed, how to unfold the new model通过从旧的(经过训练的)模型调用创建新的 Keras 模型,新模型摘要已折叠,如何展开新模型
【发布时间】:2020-09-28 00:28:29
【问题描述】:

当我们使用经过训练的模型创建一个新的 Keras 模型时,新模型的摘要没有显示每一层,如何展开它或生成一个新的模型,每一层都明确暴露在摘要中?

Model: "m_1"
__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
m1_input (InputLayer)           [(None, 32, 32, 3)]  0                                            
__________________________________________________________________________________________________
m1_flat (Flatten)               (None, 3072)         0           m1_input[0][0]                   
__________________________________________________________________________________________________
m1_dense1 (Dense)               (None, 5)            15365       m1_flat[0][0]                    
__________________________________________________________________________________________________
m1_dense2 (Dense)               (None, 5)            30          m1_dense1[0][0]                  
__________________________________________________________________________________________________
m1_add (Add)                    (None, 5)            0           m1_dense1[0][0]                  
                                                                 m1_dense2[0][0]                  
__________________________________________________________________________________________________
dense (Dense)                   (None, 10)           60          m1_add[0][0]                     
==================================================================================================
Total params: 15,455
Trainable params: 15,455
Non-trainable params: 0
__________________________________________________________________________________________________
None
Model: "m_2"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
new_inp (InputLayer)         [(None, 32, 32, 3)]       0         
_________________________________________________________________
m_1 (Model)                  (None, 10)                15455     
=================================================================
Total params: 15,455
Trainable params: 15,455
Non-trainable params: 0
_________________________________________________________________
None

代码问题重现如下(如果你能在这个sn-p之上工作将不胜感激):

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers

m1_input = layers.Input(shape=(32,32,3),name='m1_input')
m1_flatten = layers.Flatten(name='m1_flat')(m1_input)
m1_dense1 = layers.Dense(5,name='m1_dense1')(m1_flatten)
m1_dense2 = layers.Dense(5,name='m1_dense2')(m1_dense1)
m1_add = layers.Add(name='m1_add')([m1_dense1,m1_dense2])
m1_dense3 = layers.Dense(10,activation='softmax')(m1_add)
m1 = keras.Model(inputs=m1_input,outputs = m1_dense3,name='m_1')

m1.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

inp = layers.Input(shape=(32,32,3),name='new_inp')
out = m1(inp)
m2 = keras.Model(inputs=inp, outputs=out, name='m_2')

print(m1.summary())
print(m2.summary())

请不要使用m2 = keras.Model(inputs=m1.input, outputs=m1.output),它一般不符合通过调用旧模型来创建新模型的目的。

【问题讨论】:

    标签: python tensorflow keras model summary


    【解决方案1】:

    我认为这行有问题:out = m1(inp) 当我调用m2.get_layer(name='m1_flat', index=None) # also 'm1_dense1', 'm1_dense1', 'm1_add') 时,它会返回ValueError: No such layer: m1_flat

    【讨论】:

    • tensorflow.__version__: 1.14.0-rc1。代码在此环境中运行没有问题。
    猜你喜欢
    • 2018-01-30
    • 2019-06-18
    • 2017-03-13
    • 2019-06-02
    • 1970-01-01
    • 2015-09-03
    • 1970-01-01
    • 2021-01-31
    • 1970-01-01
    相关资源
    最近更新 更多