【发布时间】: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