我有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? 这有什么帮助吗?
答案 0 :(得分:2)
如果您的系统上安装了tensorflow GPU,则系统将自动使用GPU进行计算,但是会发生问题,因为GPU并不总是具有执行计算所需的数据,即瓶颈出现在您的计算机上输入管道,仅tf.array
和tf.convert_to_tensor
不太可能提供帮助,因为它们仅在内存中控制一次数据,您需要的是generators
(考虑这是python),生成器是一个函数返回一个我们可以迭代的对象(迭代器)(一次一个值)。
生成器及其迭代器已经在tf.data
api https://www.tensorflow.org/guide/datasets的tensorflow中实现,您可以直接使用它们并相应地修改管道。