69

当我运行keras脚本时,我得到以下输出:

使用TensorFlow后端。2017年6月14日17:40:44.621761:Wtensorflow/core/platform/cpu_feature_guard.cc:45]tensorflow库并没有编译为使用SSE4.1指令,但这些是可以在您的机器上使用,并且可以加快CPU计算。2017年6月14日17:40:44.621783:Wtensorflow/core/platform/cpu_feature_guard.cc:45]tensorflow库并没有编译为使用SSE4.2指令,但这些指令是可以在您的机器上使用,并且可以加快CPU计算。2017年6月14日17:40:44.621788:Wtensorflow/core/platform/cpu_feature_guard.cc:45]tensorflow库并没有编译成使用AVX指令,但这些是可以在您的机器上使用,并且可以加快CPU计算。2017年6月14日17:40:44.621791:Wtensorflow/core/platform/cpu_feature_guard.cc:45]tensorflow库不是为了使用AVX2指令而编译的,但这些是可以在您的机器上使用,并且可以加快CPU计算。2017年6月14日17:40:44.621795:Wtensorflow/core/platform/cpu_feature_guard.cc:45]tensorflow这个库并不是为了使用FMA指令而编译的,但这些是可用并可以加速CPU计算。2017-06-14 17:40:44.721911:我张量流/流执行器/cuda/cuda_gpu_executor.cc:901]成功从SysFS读取的NUMA节点具有负值(-1),但必须有至少一个NUMA节点,因此返回NUMA节点02017年6月14日17:40:44.722288:Itensorflow/core/common_runtime/gpu/gpu_device.cc:887]找到设备0具有属性:名称:GeForce GTX 850M主:5次:0内存时钟频率(GHz)0.9015pciBusID 0000:0a:00.0总内存:3.95GiB可用内存:3.69GiB2017-06-14 17:40:44.722302:我张量流/core/common_runtime/gpu/gpu_device.cc:908]DMA:02017年6月14日17:40:44.722307:I张量流/core/common_runtime/gpu/gpu_device.cc:918]0:Y2017年6月14日17:40:44.722312:Itensorflow/core/common_runtime/gpu/gpu_device.cc:977]创建TensorFlow设备(/gpu:0)->(设备:0,名称:GeForce GTX 850M,pci总线id:0000:0a:00.0)

这是什么意思?我使用的是GPU还是CPU版本的张量流?

在安装keras之前,我使用的是GPU版本的张量流。

阿尔索sudo pip3列表显示张量流-gpu(1.1.0)而不是像张量流cpu.

运行[this stackoverflow question]中提到的命令,可以得到以下结果:

TensorFlow库未编译为使用SSE4.1指令,但这些在您的机器上可用,可以加快CPU的速度计算。2017年6月14日17:53:31.424793:Wtensorflow/core/platform/cpu_feature_guard.cc:45]tensorflow库并没有编译为使用SSE4.2指令,但这些指令是可以在您的机器上使用,并且可以加快CPU计算。2017年6月14日17:53:31.424803:Wtensorflow/core/platform/cpu_feature_guard.cc:45]tensorflow库并没有编译成使用AVX指令,但这些是可以在您的机器上使用,并且可以加快CPU计算。2017年6月14日17:53:31.424812:Wtensorflow/core/platform/cpu_feature_guard.cc:45]tensorflow这个库并没有编译成使用AVX2指令,但这些是可以在您的机器上使用,并且可以加快CPU计算。2017年6月14日17:53:31.424820:Wtensorflow/core/platform/cpu_feature_guard.cc:45]tensorflow这个库并不是为了使用FMA指令而编译的,但这些是可以在您的机器上使用,并且可以加快CPU计算。2017年6月14日17:53:31.540959:本人张量流/流执行器/cuda/cuda_gpu_executor.cc:901]成功从SysFS读取的NUMA节点具有负值(-1),但必须有至少一个NUMA节点,因此返回NUMA节点02017年6月14日17:53:31.541359:本人tensorflow/core/common_runtime/gpu/gpu_device.cc:887]找到设备0具有属性:名称:GeForce GTX 850M主:5次:0内存时钟频率(GHz)0.9015pciBusID 0000:0a:00.0总内存:3.95GiB可用内存:128.12MiB2017-06-14 17:53:31.541407:我张量流/core/common_runtime/gpu/gpu_device.cc:908]DMA:02017年6月14日17:53:31.541420:I张量流/core/common_runtime/gpu/gpu_device.cc:918]0:Y2017-06-14 17:53:31.541441:本人tensorflow/core/common_runtime/gpu/gpu_device.cc:977]创建TensorFlow设备(/gpu:0)->(设备:0,名称:GeForce GTX 850M,pci总线id:0000:0a:00.0)2017年6月14日17:53:31.547902:Etensorflow/stream_executor/cuda/cuda_driver.cc:893]未能从设备分配128.12M(134348800字节):库达错误输出内存设备映射:/job:localhost/replica:0/task:0/gpu:0->设备:0,名称:GeForceGTX 850M,pci总线id:0000:0a:00.02017-06-14 17:53:31.549482:本人tensorflow/core/common_runtime/direct_session.cc:257]设备映射:/job:localhost/replica:0/task:0/gpu:0->设备:0,名称:GeForceGTX 850M,pci总线id:0000:0a:00.0
0

3个答案

重置为默认值
118

您正在使用GPU版本。您可以使用列出可用的张量流设备(也可以检查问题):

从tensorflow.python.client导入设备libprint(device_lib.list_local_devices())#设备属性列表

编辑:

使用tensorflow>=1.4,您可以运行下列的功能:

导入张量流作为tftf.test.is_gpu_available()#真/假#或者只检查带有cuda支持的gputf.test.is_gpu_available(cuda_only=真)

编辑2:

上述函数在中已弃用张量流>2.1。相反,您应该使用以下函数:

导入张量流作为tftf.config.list_physical_devices(“GPU”)

注意:

在您的情况下,cpu和gpu都可用,如果您使用的是tensorflow的cpu版本,则不会列出gpu。在您的情况下,不设置张量流设备(带tf.设备(“..”)),tensorflow将自动选择您的gpu!

此外,您的sudo pip3列表清楚地显示了您正在使用tensorflow-gpu。如果您要使用十个最慢的cpu版本,那么名称应该是这样的张量流(1.1.0).

检查问题以获取有关警告的信息。

0
48

为了让Keras使用GPU,很多事情都必须顺利进行。把这个放在你jupyter笔记本的顶部:

#确认TensorFlow看到GPU从tensorflow.python.client导入设备_lib在str(device_lib.list_local_devices())中断言“GPU”#确认Keras看到GPU(对于TensorFlow 1.X+Keras)从keras导入后端断言长度(backend.tensorflow_backend._get_available_gpus())>0#确认PyTorch看到GPU来自火炬进口cuda断言cuda.is_available()断言cuda.device_count()>0打印(cuda.get_device_name(cuda.current_device()))

注意:随着TensorFlow 2.0的发布,Keras现在已包含在TF API中。

0
5

要找出您的操作和张量分配给了哪些设备,请创建log_device_placement配置选项设置为True的会话。

#创建一个图形。a=tf.常数([1.0,2.0,3.0,4.0,5.0,6.0],形状=[2,3],名称='a')b=tf.常数([1.0,2.0,3.0,4.0,5.0,6.0],形状=[3,2],名称='b')c=tf.matmul(a,b)#创建一个将log_device_placement设置为True的会话。sess=tf.Session(config=tf.ConfigProto(log_device_placement=True))#运行操作。打印(sess.run(c))

您应该会看到以下输出:

设备映射:/job:localhost/replica:0/task:0/device:GPU:0->设备:0,名称:特斯拉K40c,pci总线编号:0000:05:00.0b: /job:localhost/replica:0/task:0/device:GPU:0a: /job:localhost/副本:0/任务:0/设备:GPU:0MatMul:/job:localhost/replica:0/task:0/device:GPU:0[[ 22.  28.][ 49.  64.]]

有关更多详细信息,请参阅链接使用带有张量流的GPU

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.