Python 我可以在gpu上运行Keras模型吗?

Python 我可以在gpu上运行Keras模型吗?,python,tensorflow,keras,jupyter,Python,Tensorflow,Keras,Jupyter,我正在运行Keras模型,提交截止时间为36小时,如果我在cpu上训练我的模型,大约需要50小时,有没有办法在gpu上运行Keras 我正在使用Tensorflow后端并在我的Jupyter笔记本上运行它,而没有安装anaconda。是的,您可以在GPU上运行keras型号。你需要先检查的东西很少 你的系统有GPU(Nvidia,因为AMD还不能工作) 您已经安装了tensorflow的GPU版本 您已经安装了CUDA 验证tensorflow是否使用GPU运行 sess=tf.Session(

我正在运行Keras模型,提交截止时间为36小时,如果我在cpu上训练我的模型,大约需要50小时,有没有办法在gpu上运行Keras


我正在使用Tensorflow后端并在我的Jupyter笔记本上运行它,而没有安装anaconda。

是的,您可以在GPU上运行keras型号。你需要先检查的东西很少

  • 你的系统有GPU(Nvidia,因为AMD还不能工作)
  • 您已经安装了tensorflow的GPU版本
  • 您已经安装了CUDA
  • 验证tensorflow是否使用GPU运行
  • sess=tf.Session(config=tf.ConfigProto(log\u device\u placement=True))

    对于TF>v2.0

    sess=tf.compat.v1.Session(config=tf.compat.v1.ConfigProto(log\u device\u placement=True))

    (感谢@nbro和@Ferro在评论中指出这一点)

    输出将如下所示:

    [
      name: "/cpu:0"device_type: "CPU",
      name: "/gpu:0"device_type: "GPU"
    ]
    
    完成所有这些操作后,您的模型将在GPU上运行:

    要检查keras(>=2.1.1)是否正在使用GPU,请执行以下操作:

    from keras import backend as K
    K.tensorflow_backend._get_available_gpus()
    

    祝你一切顺利。

    当然。我想您已经为GPU安装了TensorFlow

    导入keras后,需要添加以下块。我在一台有56核cpu和gpu的机器上工作

    import keras
    import tensorflow as tf
    
    
    config = tf.ConfigProto( device_count = {'GPU': 1 , 'CPU': 56} ) 
    sess = tf.Session(config=config) 
    keras.backend.set_session(sess)
    

    当然,这种用法强制执行我的机器的最大限制。您可以降低cpu和gpu的消耗值。

    当然可以。如果您在Tensorflow或CNTk后端上运行,则默认情况下,您的代码将在GPU设备上运行

    Theano标志:

    THEANO\u FLAGS=device=gpu,floatX=float32 python my\u keras\u script.py


    2.0兼容答案:上述答案详细解释了如何在Keras模型上使用GPU,我想解释如何在
    Tensorflow 2.0版
    上使用GPU

    要知道有多少GPU可用,我们可以使用以下代码:

    print("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU')))
    
    tf.debugging.set_log_device_placement(True)
    
    # Create some tensors
    a = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
    b = tf.constant([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]])
    c = tf.matmul(a, b)
    
    print(c)
    
    要找出您的运算和张量分配给哪些设备, 放置
    tf.debug。将\u log\u device\u placement(True)
    设置为程序的第一条语句

    启用设备放置日志记录会导致打印任何张量分配或操作。例如,运行以下代码:

    print("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU')))
    
    tf.debugging.set_log_device_placement(True)
    
    # Create some tensors
    a = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
    b = tf.constant([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]])
    c = tf.matmul(a, b)
    
    print(c)
    
    给出如下所示的输出:

    在设备中执行op MatMul /作业:localhost/副本:0/任务:0/设备:GPU:0 tf.Tensor([[22.28.] [49.64.],shape=(2,2),dtype=float32)


    有关更多信息,请参阅任务管理器中的脚本是否正在运行GPU。如果不是,请怀疑您的CUDA版本与您正在使用的tensorflow版本是正确的,正如其他答案所建议的那样


    此外,需要一个适合CUDA版本的CUDA DNN库才能使用tensorflow运行GPU。下载/解压缩DLL(例如cudnn64_7.DLL)并将其放入CUDA bin文件夹(例如C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin)。

    我在Windows 10上使用Anaconda,带有GTX 1660 Super。在此之后,我首先安装了CUDA环境。但是现在Anaconda上有一个
    keras gpu
    元包,显然不需要事先安装CUDA和cuDNN库(我的已经安装了)

    这就是我创建一个名为keras\gpu的专用环境的原因:

    # need to downgrade from tensorflow 2.1 for my particular setup
    conda create --name keras_gpu keras-gpu=2.3.1 tensorflow-gpu=2.0
    
    要添加@johncasey的答案,但对于TensorFlow 2.0,添加此块对我很有用:

    import tensorflow as tf
    from tensorflow.python.keras import backend as K
    
    # adjust values to your needs
    config = tf.compat.v1.ConfigProto( device_count = {'GPU': 1 , 'CPU': 8} )
    sess = tf.compat.v1.Session(config=config) 
    K.set_session(sess)
    

    解决了我遇到的
    set\u会话
    错误:您需要从tensorflow路径使用keras后端,而不是keras本身。

    我必须为此安装python 3.5。否则tensorflow将无法工作?无需。TF同时适用于2.7和3.5。选择了TF的正确版本,就是这样。好吧,我会选择2.7,安装3.5I时有问题。我得到这个错误-
    在/usr/local/lib/python2.7/dist-packages下载/解包tensorflow清理中找不到任何满足要求的下载。。。在/usr/local/lib/python2.7/dist-packages中找不到tensorflow的任何发行版,在/home/hyperworks/.pip/pip.log
    中存储故障调试日志。我发现:在这里,人们可以在一个狭窄的领域里仔细阅读高评分的问题,然后在媒体上做一个完整的“回答”,并从视图中获得实际的收益。请看这篇文章。错误
    模块“tensorflow”没有属性“ConfigProto”
    您正在使用tensorflow 2?我用tf 1.X测试了它。唯一的答案是,在gpu上运行keras需要安装另一整套软件,从nvidia驱动程序到keras本身的'-gpu'构建,再加上注意cudnn和cuda的正确安装和链接。如果我只列出“gpu”,现在就没有显示XLA_gpu了。也许这也是keras似乎没有看到我的gpu的原因