keras 有没有什么方法可以计算模型中的层数,也就是说,数字答案?

ffscu2ro  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(151)

请考虑以下模型

def create_model():
  x_1=tf.Variable(24)
  bias_initializer = tf.keras.initializers.HeNormal()
  model = Sequential()
  model.add(Conv2D(64, (5, 5),  input_shape=(28,28,1),activation="relu", name='conv2d_1', use_bias=True,bias_initializer=bias_initializer))
  model.add(MaxPooling2D(pool_size=(2, 2)))
  model.add(Conv2D(32, (5, 5), activation="relu",name='conv2d_2',  use_bias=True,bias_initializer=bias_initializer))
  model.add(MaxPooling2D(pool_size=(2, 2)))
  model.add(Flatten())
  model.add(Dense(120, name='dense_1',activation="relu", use_bias=True,bias_initializer=bias_initializer),)
  model.add(Dense(10, name='dense_2', activation="softmax", use_bias=True,bias_initializer=bias_initializer),)

我可以提取模型示例的摘要,但是否有任何方法可以给予/计算层数(带有可训练参数)?例如,上面发布的模型有4个带有可训练参数的层。

ki0zmccv

ki0zmccv1#

model.trainable_weights给出了所有可训练权重的列表。权重和偏差是独立考虑的,因此您需要对权重总数进行唯一计数

np.unique([i.name.split('/')[0] for i in model.trainable_weights])
>>>
array(['conv2d_1', 'conv2d_2', 'dense_1', 'dense_2'], dtype='<U8')

len(np.unique([i.name.split('/')[0] for i in model.trainable_weights]))
>>>
4

相关问题