给定一个类的实例列表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
但是,如果调用类型的对象涉及深度神经网络,这将产生大量开销。