我有一个单层,256个隐藏单元,我用Keras训练的RNN,我现在想要部署。理想情况下,我想将此RNN的多个实例部署到GPU上。但是,此时,当我使用keras.models.load_model()
加载模型时,它似乎使用了我可用的12Gb GPU内存的11Gb。
我目前对网络应使用多少内存的估计值来自超参数的数量:
总计:32 bits/parameter x (4 x 256 + 256 x 256) parameters = 260e6 bits
这比我目前看到的要少得多。所以我的假设是Keras认为我仍在训练我的模型,因此试图缓存批量错误大小。但我还应该加载我的模型呢?
答案 0 :(得分:4)
不,它只是gpu内存使用的策略。 Keras通常基于tensorflow,而tensorflow默认映射所有你的免费gpu内存,以避免动态内存分配,无论你真正使用多少内存。
您可以像下面这样进行配置:
import tensorflow as tf
from keras.backend.tensorflow_backend import set_session
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.3 # or any valid options.
set_session(tf.Session(config=config))