我有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 GPU被安装在系统上,那么你的系统会自动使用GPU进行计算,但是出现问题是因为GPU并不总是有它需要提供给它进行计算,即瓶颈发生在你的输入管道中的数据,只是tf.array
和tf.convert_to_tensor
不可能帮助,因为他们只在内存控制数据一次,你需要的是generators
(考虑到这是蟒蛇),发电机是返回一个对象(迭代器),我们可以遍历一个函数(一个值在时间)。
发电机和它的迭代器在tensorflow已经实施的tf.data
API https://www.tensorflow.org/guide/datasets您可以直接使用它们,并相应地修改您的管道。