###TensorFlowのチュートリアルでGPUメモリエラー
現在、TensorFlowのDeep MNIST for Experts(https://www.tensorflow.org/get_started/mnist/pros)をみながら畳み込みニューラルネットワークの実装を行っています。コードを書くことまではできたのですが、実行すると「GPUに2.59GiBを割り当てようとしたが、足りなかった(意訳)」とエラーが出てきました。
使用しているGPUはGTX1080でメモリは8GiBあるはずですし、TensorFlowの出力にも6.61GiBの空きと出ています。しかし、何度行ってもエラーが消えません。
###発生している問題・エラーメッセージ
C:\DL\TensorFlow\tutorial>python mnist-pro.py Extracting MNIST_data\train-images-idx3-ubyte.gz Extracting MNIST_data\train-labels-idx1-ubyte.gz Extracting MNIST_data\t10k-images-idx3-ubyte.gz Extracting MNIST_data\t10k-labels-idx1-ubyte.gz 2017-11-10 18:02:34.970054: I C:\tf_jenkins\home\workspace\rel-win\M\windows-gpu\PY\35\tensorflow\core\platform\cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2 2017-11-10 18:02:35.255329: I C:\tf_jenkins\home\workspace\rel-win\M\windows-gpu\PY\35\tensorflow\core\common_runtime\gpu\gpu_device.cc:1030] Found device 0 with properties: name: GeForce GTX 1080 major: 6 minor: 1 memoryClockRate(GHz): 1.7335 pciBusID: 0000:01:00.0 totalMemory: 8.00GiB freeMemory: 6.61GiB 2017-11-10 18:02:35.255434: I C:\tf_jenkins\home\workspace\rel-win\M\windows-gpu\PY\35\tensorflow\core\common_runtime\gpu\gpu_device.cc:1120] Creating TensorFlow device (/device:GPU:0) -> (device: 0, name: GeForce GTX 1080, pci bus id: 0000:01:00.0, compute capability: 6.1) 2017-11-10 18:02:35.837899: I C:\tf_jenkins\home\workspace\rel-win\M\windows-gpu\PY\35\tensorflow\core\common_runtime\gpu\gpu_device.cc:1120] Creating TensorFlow device (/device:GPU:0) -> (device: 0, name: GeForce GTX 1080, pci bus id: 0000:01:00.0, compute capability: 6.1) step 0, training accuracy 0.06 ~中略~ step 9900, training accuracy 1 2017-11-10 18:03:27.986211: W C:\tf_jenkins\home\workspace\rel-win\M\windows-gpu\PY\35\tensorflow\core\common_runtime\bfc_allocator.cc:217] Allocator (GPU_0_bfc) ran out of memory trying to allocate 2.59GiB. The caller indicates that this is not a failure, but may mean that there could be performance gains if more memory is available. test accuracy 0.9911
###該当のソースコード
python
1from tensorflow.examples.tutorials.mnist import input_data 2mnist = input_data.read_data_sets('MNIST_data', one_hot=True) 3 4import tensorflow as tf 5sess = tf.InteractiveSession() 6 7x = tf.placeholder(tf.float32, shape=[None, 784]) 8y_ = tf.placeholder(tf.float32, shape=[None, 10]) 9W = tf.Variable(tf.zeros([784,10])) 10b = tf.Variable(tf.zeros([10])) 11sess.run(tf.global_variables_initializer()) 12 13def weight_variable(shape): 14 initial = tf.truncated_normal(shape, stddev=0.1) 15 return tf.Variable(initial) 16 17def bias_variable(shape): 18 initial = tf.constant(0.1, shape=shape) 19 return tf.Variable(initial) 20 21def conv2d(x, W): 22 return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME') 23 24def max_pool_2x2(x): 25 return tf.nn.max_pool(x, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME') 26 27W_conv1 = weight_variable([5, 5, 1, 32]) 28b_conv1 = bias_variable([32]) 29 30x_image = tf.reshape(x, [-1, 28, 28, 1]) 31 32h_conv1 = tf.nn.relu(conv2d(x_image, W_conv1) + b_conv1) 33h_pool1 = max_pool_2x2(h_conv1) 34 35W_conv2 = weight_variable([5, 5, 32, 64]) 36b_conv2 = bias_variable([64]) 37 38h_conv2 = tf.nn.relu(conv2d(h_pool1, W_conv2) + b_conv2) 39h_pool2 = max_pool_2x2(h_conv2) 40 41W_fc1 = weight_variable([7 * 7 * 64, 1024]) 42b_fc1 = bias_variable([1024]) 43 44h_pool2_flat = tf.reshape(h_pool2, [-1, 7*7*64]) 45h_fc1 = tf.nn.relu(tf.matmul(h_pool2_flat, W_fc1) + b_fc1) 46 47keep_prob = tf.placeholder(tf.float32) 48h_fc1_drop = tf.nn.dropout(h_fc1, keep_prob) 49 50W_fc2 = weight_variable([1024, 10]) 51b_fc2 = bias_variable([10]) 52 53y_conv = tf.matmul(h_fc1_drop, W_fc2) + b_fc2 54 55cross_entropy = tf.reduce_mean( 56 tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y_conv)) 57train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy) 58correct_prediction = tf.equal(tf.argmax(y_conv, 1), tf.argmax(y_, 1)) 59accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) 60 61with tf.Session() as sess: 62 sess.run(tf.global_variables_initializer()) 63 for i in range(10000): 64 batch = mnist.train.next_batch(50) 65 if i % 100 == 0: 66 train_accuracy = accuracy.eval(feed_dict={ 67 x: batch[0], y_: batch[1], keep_prob: 1.0}) 68 print('step %d, training accuracy %g' % (i, train_accuracy)) 69 train_step.run(feed_dict={x: batch[0], y_: batch[1], keep_prob: 0.5}) 70 71 print('test accuracy %g' % accuracy.eval(feed_dict={ 72 x: mnist.test.images, y_: mnist.test.labels, keep_prob: 1.0})) 73
###試したこと
上限をあえて設定しなおすことを行いました。
python
1config = tf.ConfigProto( 2 gpu_options=tf.GPUOptions( 3 # per_process_gpu_memory_fraction=0.9 # 最大値の50%まで 4 allow_growth=True 5 ) 6) 7sess = sess = tf.Session(config=config)
しかし、問題は解決できませんでした。
###補足情報(言語/FW/ツール等のバージョンなど)
開発環境
- OS:windows10
- CPU:Intel(R) Core(TM) i7-6700K
- GPU:GTX1080
- メモリ:32.0 GB
- ディスク:SSD 256 GB
使用ツール
- Tensorflow 1.4
- Anacoda 5.01
- Pyhon 3.5.4
不足情報などがありましたら追加していきます。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/10 13:44