【问题标题】:Do I need to modify my keras code to run efficiently on gpu?我是否需要修改我的 keras 代码才能在 gpu 上高效运行?
【发布时间】:2019-07-02 06:25:44
【问题描述】:

我有 cuda8.0.61、tensorflow_gpu 版本和 keras。我正在 224*224 图像数据上训练一个 20 层的 keras 模型 当我在终端运行 nvidia -smi 时,我发现内存快用完了,计算 util 少了%。当我尝试拟合模型时,机器变得非常慢。

我知道要使用 gpu 并在设备之间切换,我应该使用以下代码:

with K.tf.device('/gpu:0'):
tf_config = tf.ConfigProto( allow_soft_placement=True )
tf_config.gpu_options.allow_growth = True
sess = tf.Session(config=tf_config) 
keras.backend.set_session(sess)

我是否需要在 cpu 和 gpu 之间切换以通过使用块来提高我的速度,例如 与 K.tf.device('/gpu:0'): 和 与 K.tf.device('/cpu:0'):?

我正在使用 numpy 数组来存储图像。我需要使用 tf.array 还是 tf.convert_to_tensor? 这会有帮助吗?

【问题讨论】:

    标签: tensorflow keras gpu cpu


    【解决方案1】:

    如果您的系统上安装了 tensorflow GPU,那么您的系统将自动使用 GPU 进行计算,但是会出现问题,因为 GPU 并不总是拥有执行计算所需的数据,即瓶颈发生在您的输入管道,只是tf.arraytf.convert_to_tensor 不太可能有帮助,因为它们只在内存中控制一次数据,你需要的是generators(考虑到这是python),生成器是一个返回对象的函数(迭代器)我们可以迭代(一次一个值)。

    生成器及其迭代器已经在 tensorflow 中的 tf.data api https://www.tensorflow.org/guide/datasets 中实现,您可以直接使用它们并相应地修改您的管道。

    【讨论】:

      猜你喜欢
      • 2019-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-09
      • 1970-01-01
      相关资源
      最近更新 更多