我是TensorFlow的新手,了解如何实施CNN(卷积神经网络)。我正在使用此official example(code)。当我尝试在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 =
类型的命令。我假设它在图层方法中被内部调用。那么,它在哪里设置呢?有什么办法可以为一个文件全局设置会话配置吗?
答案 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之前添加此代码。