如何在MNIST的示例CNN Estimator中设置会话配置(使用tf.layers构建)

时间:2017-05-01 14:12:04

标签: tensorflow

我是TensorFlow的新手,了解如何实施CNN(卷积神经网络)。我正在使用此official examplecode)。当我尝试在GPU上运行它时,它会提供 cuda_error_out_of_memory ,因为它会尝试分配可用的整个GPU内存。我通过设置CUDA_VISIBLE_DEVICES =""在CPU上运行它。环境变量,它运作良好,但花了很多时间。

我寻找cuda_error_out_of_memory的解决方案,并发现可以通过在tf会话中设置session_start(); //add this line if you did not start session echo 'Welcome : '.isset($_SESSION['username']) ? $_SESSION['username'] : 'You are not registered yet'; config.gpu_options.allow_growth = True来缓解此问题。

问题:在我上面为CNN分享的代码中,我在哪里设置会话配置,因为我没有看到任何config.gpu_options.per_process_gpu_memory_fraction =类型的命令。我假设它在图层方法中被内部调用。那么,它在哪里设置呢?有什么办法可以为一个文件全局设置会话配置吗?

2 个答案:

答案 0 :(得分:0)

您可以在Estimator的构造函数中添加任何配置:

gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.333)
config = tf.ConfigProto(gpu_options=gpu_options)
mnist_classifier = tf.estimator.Estimator(
    model_fn=cnn_model_fn, model_dir="/tmp/mnist_convnet_model", session_config=config)

答案 1 :(得分:0)

  gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.333)
  sess_config = tf.ConfigProto(gpu_options=gpu_options)

  run_config = tf.estimator.RunConfig(session_config = sess_config)
  mnist_classifier = tf.estimator.Estimator(
      model_fn=cnn_model_fn, model_dir="/tmp/mnist_convnet_model", config=run_config)

在创建Esitimator之前添加此代码。