在当前的笔记本教程(gpflow 2.0)中,所有@tf.function 标签都包含选项 autograph=False,例如(https://gpflow.readthedocs.io/en/2.0.0-rc1/notebooks/advanced/gps_for_big_data.html ):
@tf.function(autograph=False)
def optimization_step(optimizer, model: gpflow.models.SVGP, batch):
with tf.GradientTape(watch_accessed_variables=False) as tape:
tape.watch(model.trainable_variables)
objective = - model.elbo(*batch)
grads = tape.gradient(objective, model.trainable_variables)
optimizer.apply_gradients(zip(grads, model.trainable_variables))
return objective
有谁知道为什么会这样,或者这背后的原因是什么?据我了解,autograph=True
只是允许将 python 控制流转换为图形结构。即使不需要该功能,将其设置/保留为 true 是否有任何缺点?
我的猜测是,它在图形的编译时只是一个很小的开销,但应该可以忽略不计。那是错的吗?
谢谢