我需要修改我的keras代码以在gpu上有效运行吗?

时间:2019-02-08 02:10:22

标签: tensorflow keras gpu cpu

我有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?  这有什么帮助吗?

1 个答案:

答案 0 :(得分:2)

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

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