Tensorflow资源耗尽而没有资源耗尽

时间:2017-06-29 11:00:11

标签: linux python-2.7 tensorflow lstm

我使用 python 中的 Tensorflow 1.2 GTX 1060 6gb 上训练 LSTM

在每个时代,我用这种方法保存模型:

def save_model(self,session,epoch,save_model_path):

    save_path = self.saver.save(session, save_model_path + "lstm_model_epoch_" + str(epoch) + ".ckpt")
    print("Model saved in file: %s" % save_path)

一切正常但在九个纪元之后,当我尝试使用此方法保存模型时,我得到 ResourceExhaustedError

我在培训期间检查了我的资源,但没有资源耗尽。

我得到的错误如下:

  

2017-06-29 12:43:02.865845:W   tensorflow / core / framework / op_kernel.cc:1158]资源耗尽:   登录/ example_0 / lstm_models / lstm_model_epoch_9.ckpt.data 00000-OF-00001.tempstate10865381291487648358   回溯(最近一次调用最后一次):文件" main.py",第32行,in      文件   " /home/alb3rto/Scrivania/Tesi/sentiment_classification/text_lstm/LSTM_sentence.py" ;,   第306行,在train_lstm文件中   " /home/alb3rto/Scrivania/Tesi/sentiment_classification/text_lstm/LSTM_sentence.py" ;,   第449行,在save_model文件中   " /home/alb3rto/anaconda2/envs/tesi/lib/python2.7/site-packages/tensorflow/python/training/saver.py" ;,   第1472行,在保存文件中   " /home/alb3rto/anaconda2/envs/tesi/lib/python2.7/site-packages/tensorflow/python/client/session.py" ;,   第789行,在运行文件中   " /home/alb3rto/anaconda2/envs/tesi/lib/python2.7/site-packages/tensorflow/python/client/session.py" ;,   第997行,在_run文件中   " /home/alb3rto/anaconda2/envs/tesi/lib/python2.7/site-packages/tensorflow/python/client/session.py" ;,   第1132行,在_do_run文件中   " /home/alb3rto/anaconda2/envs/tesi/lib/python2.7/site-packages/tensorflow/python/client/session.py" ;,   第1152行,在_do_call中   tensorflow.python.framework.errors_impl.ResourceExhaustedError:   登录/ example_0 / lstm_models / lstm_model_epoch_9.ckpt.data 00000-OF-00001.tempstate10865381291487648358      [[节点:保存/保存V2 = SaveV2 [dtypes = [DT_FLOAT,DT_FLOAT,DT_FLOAT,   DT_FLOAT,DT_FLOAT,DT_FLOAT,DT_FLOAT,DT_FLOAT,DT_FLOAT,DT_FLOAT,   DT_FLOAT,DT_FLOAT,DT_FLOAT,DT_FLOAT],   _device =" / job:localhost / replica:0 / task:0 / cpu:0"](_ arg_save / Const_0_0,save / SaveV2 / tensor_names,save / SaveV2 / shape_and_slices,Variable / _21,   变量/ Adam / _23,变量/ Adam_1 / _25,变量_1 / _27,   Variable_1 / Adam / _29,Variable_1 / Adam_1 / _31,beta1_power / _33,   beta2_power / _35,rnn / basic_lstm_cell / bias / _37,   RNN / basic_lstm_cell /偏置/亚当/ _39,   rnn / basic_lstm_cell / bias / Adam_1 / _41,rnn / basic_lstm_cell / kernel / _43,   RNN / basic_lstm_cell /内核/亚当/ _45,   rnn / basic_lstm_cell / kernel / Adam_1 / _47)]]由op u' save / SaveV2'引起,   定义于:File" main.py",第28行,in       lstm_sentence = lstm()File" /home/alb3rto/Scrivania/Tesi/sentiment_classification/text_lstm/LSTM_sentence.py",   第18行,在 init 文件中   " /home/alb3rto/Scrivania/Tesi/sentiment_classification/text_lstm/LSTM_sentence.py" ;,   第117行,在build_lstm文件中   " /home/alb3rto/anaconda2/envs/tesi/lib/python2.7/site-packages/tensorflow/python/training/saver.py" ;,   第1139行,在 init 中       self.build()File" /home/alb3rto/anaconda2/envs/tesi/lib/python2.7/site-packages/tensorflow/python/training/saver.py",   1170行,正在构建中       restore_sequentially = self._restore_sequentially)File" /home/alb3rto/anaconda2/envs/tesi/lib/python2.7/site-packages/tensorflow/python/training/saver.py",   689行,正在构建中       save_tensor = self._AddSaveOps(filename_tensor,saveables)File" /home/alb3rto/anaconda2/envs/tesi/lib/python2.7/site-packages/tensorflow/python/training/saver.py",   第276行,在_AddSaveOps中       save = self.save_op(filename_tensor,saveables)File" /home/alb3rto/anaconda2/envs/tesi/lib/python2.7/site-packages/tensorflow/python/training/saver.py",   第219行,在save_op中       张贴文件" /home/alb3rto/anaconda2/envs/tesi/lib/python2.7/site-packages/tensorflow/python/ops/gen_io_ops.py",   第745行,在save_v2文件中   " /home/alb3rto/anaconda2/envs/tesi/lib/python2.7/site-packages/tensorflow/python/framework/op_def_library.py" ;,   第767行,在apply_op文件中   " /home/alb3rto/anaconda2/envs/tesi/lib/python2.7/site-packages/tensorflow/python/framework/ops.py" ;,   第2506行,在create_op中       original_op = self._default_original_op,op_def = op_def)File" /home/alb3rto/anaconda2/envs/tesi/lib/python2.7/site-packages/tensorflow/python/framework/ops.py",   第1269行,在 init 中       self._traceback = _extract_stack()ResourceExhaustedError(参见上面的回溯):   登录/ example_0 / lstm_models / lstm_model_epoch_9.ckpt.data 00000-OF-00001.tempstate10865381291487648358      [[节点:保存/保存V2 = SaveV2 [dtypes = [DT_FLOAT,DT_FLOAT,DT_FLOAT,   DT_FLOAT,DT_FLOAT,DT_FLOAT,DT_FLOAT,DT_FLOAT,DT_FLOAT,DT_FLOAT,   DT_FLOAT,DT_FLOAT,DT_FLOAT,DT_FLOAT],   _device =" / job:localhost / replica:0 / task:0 / cpu:0"](_ arg_save / Const_0_0,save / SaveV2 / tensor_names,save / SaveV2 / shape_and_slices,Variable / _21,   变量/ Adam / _23,变量/ Adam_1 / _25,变量_1 / _27,   Variable_1 / Adam / _29,Variable_1 / Adam_1 / _31,beta1_power / _33,   beta2_power / _35,rnn / basic_lstm_cell / bias / _37,   RNN / basic_lstm_cell /偏置/亚当/ _39,   rnn / basic_lstm_cell / bias / Adam_1 / _41,rnn / basic_lstm_cell / kernel / _43,   RNN / basic_lstm_cell /内核/亚当/ _45,   RNN / basic_lstm_cell /内核/ Adam_1 / _47)]]

我该如何解决?

1 个答案:

答案 0 :(得分:0)

在GPU上遇到OOMResourceExausted Error时,我认为更改(减少)batch size是首先尝试的正确选项。

  

对于不同的GPU,您可能需要基于GPU的不同批量大小   你有记忆。

最近我遇到了类似的问题,调整了很多不同类型的实验。

以下是question的链接(也包括一些技巧)。

但是,在减少批量大小的同时,您可能会发现训练速度变慢。因此,如果你有多个GPU,你可以使用它们。要查看您的GPU,您可以在终端上书写

nvidia-smi

它将显示有关您的gpu架的必要信息。