有人可以方便地将变量分组到给定对象下。
我的用例是张量流,您通常必须首先定义图形,然后用实际数据提供图形。为了避免将图形变量的名称与数据变量的名称混淆,将它们全部分组到一个对象下是有用的。我一直在做的是:
g = lambda: None
g.iterator = tf.data.Dataset.from_tensor_slices((x_train, y_train)).batch(minibatch_size).make_initializable_iterator()
g.x_next, g.y_next = g.iterator.get_next()
g.data_updates = g.x_data.assign(g.x_next), g.y_data.assign(g.y_next)
除了当你使用lambda: None
时,你的同事往往会生气和困惑。
是否存在提供同样干净语法的替代方法,但使用的东西显然是lambda: None
以外的容器?
我首先尝试将它们作为类的所有静态成员,但问题是静态成员不能引用其他静态成员。 g=object()
会很好,但不允许你分配属性。
答案 0 :(得分:4)
如果不值得定义一个专门的类,你可以使用types.SimpleNamespace
,这是一个专门设计的类,除了保存属性外什么都不做。
g = types.SimpleNamespace()
g.iterator = tf.data.Dataset.from_tensor_slices((x_train, y_train)).batch(minibatch_size).make_initializable_iterator()
g.x_next, g.y_next = g.iterator.get_next()
g.data_updates = g.x_data.assign(g.x_next), g.y_data.assign(g.y_next)