with tf.device('/gpu:0'):
x = tf.placeholder(tf.float32, shape=(None, 20, 64))
y = LSTM(32)(x) # all ops in the LSTM layer will live on GPU:0
with tf.device('/cpu:0'):
x = tf.placeholder(tf.float32, shape=(None, 20, 64))
y = LSTM(32)(x) # all ops in the LSTM layer will live on CPU:0
8条答案
按热度按时间k75qkfdt1#
如果要强制Keras使用CPU
路1
在导入Keras / Tensorflow之前。
第二条路
以下列身份运行脚本
另请参阅
to94eoyn2#
这对我(win10)有效,在导入keras之前放置:
bqjvbblv3#
一种比较独立的方法是使用
这里,用
booleans
和CPU
,我们通过严格定义Tensorflow会话允许访问的GPU和CPU的数量来指示是使用GPU还是CPU运行代码。变量num_GPU
和num_CPU
定义了该值。然后,num_cores
通过intra_op_parallelism_threads
和inter_op_parallelism_threads
设置可供使用的CPU内核数。intra_op_parallelism_threads
变量规定了计算图中单个节点中的并行操作允许使用的线程数(内部),而inter_ops_parallelism_threads
变量定义了跨计算图节点的并行操作可访问的线程数(内部)。allow_soft_placement
允许在满足以下任一条件的情况下在CPU上运行操作:1.该操作没有GPU实现
1.没有已知或注册的GPU设备
1.需要与来自CPU的其他输入协同定位
所有这些都是在我的类的构造函数中执行的,在任何其他操作之前,并且与我使用的任何模型或其他代码完全分离。
注意:这需要安装
tensorflow-gpu
和cuda
/cudnn
,因为提供了使用GPU的选项。参考文献:
yduiuuwa4#
只需导入tensortflow并使用keras,就这么简单。
1bqhqjot5#
根据keras tutorial,您可以简单地使用与常规tensorflow 中相同的
tf.device
范围:46qrfjad6#
我只是花了一些时间才弄明白。托马斯的答案并不完整。假设你的程序是
test.py
,你想使用gpu0来运行这个程序,并保持其他gpus的自由。您应该写入
CUDA_VISIBLE_DEVICES=0 python test.py
请注意,它是
DEVICES
,而不是DEVICE
xoshrz7s7#
对于使用PyCharm的人,为了强制使用CPU,您可以在Run/Debug配置中的Environment variables下添加下面的行:
ufj5ltwl8#
要禁用在GPU上运行(tensor flow 2.9),请使用
tf.config.set_visible_devices([], 'GPU')
。空列表参数表示在此运行中将没有可见的GPU。在代码的早期执行此操作,例如在Keras初始化tf配置之前。
参见文档https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/config/set_visible_devices