给定一个类的实例列表A,[A() for _ in range(5)]我想随机选择其中一个(参见下面的代码示例)
class A:
def __init__(self, a):
self.a = a
def __call__(self):
return self.a
def f():
a_list = [A(i) for i in range(5)]
a = a_list[random.randint(0, 5)]()
return a
f()
有没有一种方法可以f在@tf.function不更改内容f且不调用所有项目的情况下进行装饰a_list?
请注意,直接装饰f而不@tf.function对上述代码进行任何其他更改是不可行的,因为它总是会返回相同的结果。另外,我知道这可以通过a_list首先调用所有元素然后使用索引来实现tf.gather_nd。A但是,如果调用类型的对象涉及深度神经网络,这将产生大量开销。