首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Keras / tensorflow核数(intra_op_parallelism_threads不起作用)

Keras / tensorflow核数(intra_op_parallelism_threads不起作用)
EN

Stack Overflow用户
提问于 2018-04-05 17:10:28
回答 1查看 4.3K关注 0票数 11

我一直试图在CPU集群上运行keras,为此,我需要限制使用的内核数量(这是一个共享系统)。因此,为了限制内核的数量,我登陆了this answer。然而,这根本行不通。我尝试使用以下基本代码运行:

代码语言:javascript
复制
from keras.applications.vgg16 import VGG16
from keras import backend as K
import numpy as np

conf = K.tf.ConfigProto(device_count={'CPU': 1}, 
                        intra_op_parallelism_threads=2, 
                        inter_op_parallelism_threads=2)
K.set_session(K.tf.Session(config=conf))
model = VGG16(weights='imagenet', include_top=False)
x = np.random.randn(1000, 224, 224, 3)
features = model.predict(x)

当我运行这个并检查htop时,它使用了所有(128个)逻辑核。这是角星里的虫子吗?还是我做错什么了?

Keras说,我的CPU支持SSE4.1和SSE4.2,它们不被使用,因为我没有从二进制编译。二进制编译也会修正原来的问题吗?

编辑:在从unix计算机启动keras脚本时,我找到了一个解决办法:

代码语言:javascript
复制
taskset -c 0-23 python keras_script.py

这将在机器的前24个核心上运行脚本。它可以工作,但是如果它可以从keras/tensorflow中获得,那还是不错的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-25 15:09:19

我找到了这段对我有用的代码片段,希望它能帮上忙:

代码语言:javascript
复制
from keras import backend as K
import tensorflow as tf
jobs = 2 # it means number of cores
config = tf.ConfigProto(intra_op_parallelism_threads=jobs,
                         inter_op_parallelism_threads=jobs,
                         allow_soft_placement=True,
                         device_count={'CPU': jobs})
session = tf.Session(config=config)
K.set_session(session)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49677913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档