【问题标题】:tensorflow 2.0 gpu set available gpu?tensorflow 2.0 gpu设置可用gpu?
【发布时间】:2019-11-17 12:14:54
【问题描述】:
from tensorflow.python.client import device_lib
def get_available_gpus():
local_device_protos = device_lib.list_local_devices()
return [x.name for x in local_device_protos if x.device_type == 'GPU']
get_available_gpus()
['/device:GPU:0', '/device:GPU:1']
我想在使用 tensorflow 2.0 gpu 训练和编译 cnn 时设置可用的 gpu
我该怎么做?
os.environ["CUDA_VISIBLE_DEVICES"]="1";
from keras.backend.tensorflow_backend import set_session
config = tf.compat.v1.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.8
tf.compat.v1.Session(config=config)
这段代码是怎么不工作的
tf.版本 '2.0.0'
【问题讨论】:
标签:
gpu
tensorflow2.0
tf.keras
【解决方案1】:
根据我在您的脚本中看到的,它看起来已经很正确了。据我了解,用于 tensorflow 2.x 的 keras 有自己的高级 API,称为 keras。
我也用
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "1"
和
try:
%tensorflow_version 2.x
except Exception:
pass
import tensorflow as tf
tf.keras.backend.clear_session()
你也可以切换到
from tensorflow import keras
from tensorflow.keras.optimizers import Adam
from tensorflow.keras import layers
你可以从这个link找到原因。
我认为首先您可以使用预先构建的(例如 VGG 或 ResNet)模型进行测试,以查看您的 GPU 是否运行。
我很确定我的一些自定义构建模型并没有真正使用 GPU。但是当我使用另一个模型运行时,它可以工作。这有点奇怪,问题在于我假设的模型。
【解决方案2】:
使用with tf.device():
因此,您现在有两个名称为:
['/device:GPU:0', '/device:GPU:1']
然后在你的代码中,例如你的主要工作:
def main():
# do somthing here...
在 main() 中:
if __name__ == "__main__":
with tf.device('/device:GPU:0'): # select device here...
main()