如何获得对象内部的嵌套属性

时间:2018-06-21 13:41:33

标签: python tensorflow

我正在使用tensorflow对象检测器代码,但这不仅是一个tensorflow问题。我做了一个将最有用的参数保存到文本文件的功能。我正在使用代码:

configs = config_util.get_configs_from_pipeline_file(FLAGS.pipeline_config_path)

以获得实际的config对象。 config本身是dict,但其中包含的值都是特定于张量流的对象。

model_config = configs['model']
type(model_config)
  

object_detection.protos.model_pb2.DetectionModel

train_config = configs['train_config']
type(train_config)
  

object_detection.protos.train_pb2.TrainConfig

每个对象都包含其他我可以通过getattr函数访问的tensorflow类对象:

type(getattr(train_config.optimizer, 'rms_prop_optimizer'))
  

object_detection.protos.optimizer_pb2.RMSPropOptimizer

由于我可以在实际的文本配置文件中看到各种参数,因此可以使用其中的getattr链来获取我感兴趣的实际值。问题在于它变得很长(而且很丑陋)我会说),但这样做并不正确。例如,要从sample config file获得实际的学习率,我将必须使用:

getattr(getattr(getattr(getattr(train_config.optimizer, 'momentum_optimizer'), 'learning_rate'), 'manual_step_learning_rate'), 'initial_learning_rate')
  

0.0003000000142492354

好的,这里有一些舍入错误,但这不是重点。

我想提一下,使用更高级别的item in object似乎不适用于这些对象。

我想知道是否有任何方法可以通过更漂亮的方法获得该价值?即使不知道实际的文本配置文件,也更容易出错,并且仍然可以应用。

严格来说,这不是张量流问题,因为getattr方法可以应用于具有属性的任何对象,但是如果存在张量流解决方案,我会开放。

0 个答案:

没有答案