为了让TF使用我的RTX GPU,也使用混合精度训练,我使用TF 2.4,我必须将这些行添加到所有涉及训练或执行TF模型的代码中:
if ('RTX' in os.popen('nvidia-smi -L').read()) and ('2.4' in tf.__version__):
from tensorflow.keras import mixed_precision
mixed_precision.set_global_policy('mixed_float16')
from tensorflow.compat.v1 import ConfigProto
from tensorflow.compat.v1 import InteractiveSession
config = ConfigProto()
config.gpu_options.allow_growth = True
session = InteractiveSession(config=config)
if语句在那里只是因为我仍然有一个非rtx机器,我有时也使用它。问题是,如果我用不同的参数运行一个脚本两次,我总是得到一个警告,说一个交互式会话是打开的,这可能会导致内存泄漏。简单的解决方法是每次重启Spyder,但我想直接关闭会话。我试过:
tf.InteractiveSession.close()
但是这会抛出一个错误。我使用Keras,所以我不擅长纯TF,当然有一个简单的命令来关闭会话?THX .
不可能在InteractiveSession上调用.close()
类本身,但在类的实例上。
那么,当你有一个实例InteractiveSession在会话变量,你应该使用:
session.close()
.
session.close()如whoisraibolt所示。