在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)
...
我使用张量对象检测 (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)
...