在tensorflow对象检测API中,有没有办法知道对象检测模型有多少个参数?

Is there a way to know how many parameters does an object detection model have, in tensorflow object detection API?

我使用张量对象检测 (TFOD) 训练了不同的模型API,我想知道给定模型训练了多少参数。

我 运行 更快的 RCNN、SSD、RFCN 以及不同的图像分辨率,我想知道有多少参数被训练。有办法吗?

我已尝试在此处 找到答案,但没有成功。

这是我在 model_main.py 的第 103 行添加的代码:

print("Training {} parameters".format(np.sum([np.prod(v.get_shape().as_list()) for v in tf.trainable_variables()]))

我认为问题是我没有访问 tf.Session() TFOD 是 运行ning,因此我的代码总是 return 0.0 参数(尽管训练 strats 很好并希望训练数百万个参数),我不知道如何解决这个问题。

TFOD API 使用 tf.estimator.Estimator 进行训练和评估。 Estimator 对象提供了获取所有变量的函数,Estimator.get_variable_names() (reference)。

您可以在 estimator.train_and_evaluate() (here) 之后添加此行 print(estimator.get_variable_names())

你会看到训练完成后打印的所有变量名。为了更快地看到结果,您可以只训练 1 步。

使用 export_inference_graph.py 时,脚本还会分析您的模型,并计算参数和 FLOPS(如果可能)。 如果看起来像这样:

_TFProfRoot (--/# total params)
  FeatureExtractor (--/# params)
  ...
  WeightSharedConvolutionalBoxPredictor (--/# params)
  ...