如何找到keras模型的参数数量?

Posted

技术标签:

【中文标题】如何找到keras模型的参数数量?【英文标题】:How to find Number of parameters of a keras model? 【发布时间】:2016-06-17 23:10:26 【问题描述】:

对于前馈网络 (FFN),很容易计算参数的数量。给定一个 CNN、LSTM 等,有没有一种快速的方法来查找 keras 模型中的参数数量?

【问题讨论】:

【参考方案1】:

模型和层为此目的有特殊的方法:

model.count_params()

此外,要获得每个层尺寸和参数的简短摘要,您可能会发现以下方法很有用

model.summary()

【讨论】:

【参考方案2】:
import keras.backend as K

def size(model): # Compute number of params in a model (the actual number of floats)
    return sum([np.prod(K.get_value(w).shape) for w in model.trainable_weights])

【讨论】:

【参考方案3】:

追溯print_summary() 函数,Keras 开发人员计算给定model 的可训练和不可训练参数的数量如下:

import keras.backend as K
import numpy as np

trainable_count = int(np.sum([K.count_params(p) for p in set(model.trainable_weights)]))

non_trainable_count = int(np.sum([K.count_params(p) for p in set(model.non_trainable_weights)]))

鉴于K.count_params()被定义为np.prod(int_shape(x)),这个解决方案与Anuj Gupta的解决方案非常相似,除了set()的使用和张量形状的检索方式。

【讨论】:

【参考方案4】:

创建网络后添加:model.summary 它会给你一个关于你的网络和参数数量的摘要。

【讨论】:

以上是关于如何找到keras模型的参数数量?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用hyperopt进行Keras深度学习网络的超参数优化?

Cnn keras模型没有经过训练的参数表示和改进模型

如何找到训练 keras 模型的 epoch 数?

如何使用 GridSearch 保存具有最佳参数的 Keras 模型

如何减少 Tensorflow/Keras 使用的 CPU 数量?

在keras中,如何控制一个epoch绘制的mini-batches数量