当我们使用经过训练的模型创建新的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
代码问题重现如下(如果您能在此代码片段之上工作,我们将不胜感激):
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)
,它通常不能通过调用旧模型来创建新模型。
发布于 2020-09-28 01:05:33
我认为这一行有一个问题:out = m1(inp)
当我调用m2.get_layer(name='m1_flat', index=None) # also 'm1_dense1', 'm1_dense1', 'm1_add')
时,它返回ValueError: No such layer: m1_flat
https://stackoverflow.com/questions/64094512
复制相似问题