tensorflow進行模型時會將顯存佔滿,導致不能與其他模型並行。
在Python中的Tensorflow顯存設置代碼
config=tf.ConfigProto();
config.gpu_options.per_process_gpu_memory_fraction=0.5
set_session(tf.Session(config=config))
在C++中
GPUOption類中有一個per_process_gpu_memory_fraction對象。其默認值爲1。所以會每次將顯存佔滿,將改值修改即可。
Session* session;
ConfigProto configProto;
//新建一個gpuoption對象
GPUOptions gpuOptions;
//設置顯存
gpuOptions.set_per_process_gpu_memory_fraction(0.3);
//修改configProto中的gpuoption對象
configProto.set_allocated_gpu_options(&gpuOptions);
//新建一個sessionOption對象並將configProto對象賦值給它
SessionOptions sessionOptions;
sessionOptions.config=configProto;
Status status = NewSession(sessionOptions, &session);//創建新會話Session
SessionOption類中含有ConfigProto的對象,若不需要對顯存進行修改,則直接調用SessionOptions的默認構造函數即可。
Status status = NewSession(SessionOptions(), &session);
一開始是想使用configProto.gpuoption()函數來獲得gpuoption對象,並對它進行修改。但是發現該函數返回的是一個const對象。。。。
後來使用ConfigProto.set_allocated_gpu_options()函數完成。
不加顯存限制結果如下:
加顯存限制結果:
因爲出來Tensorflow以外還有其他模型,所以顯卡數值不是完全的0.3。但是可以看出明顯限制顯存了。可以同時加載多個模型了。