質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.61%

  • Python

    7482questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • TensorFlow

    634questions

GPU版tensorflowが動かない

受付中

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 833

nisekonsan

score 2

 前提・実現したいこと

tensorflow(GPU)を使用して畳み込みニューラルネットワークの
チュートリアルをやっています。

 発生している問題・エラーメッセージ

C:\Users\TAKANO\Anaconda3\envs\gputf15rc0\python.exe C:/Users/TAKANO/PycharmProjects/180505_CNN/main.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
2018-05-05 14:02:37.074310: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\36\tensorflow\core\platform\cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2
2018-05-05 14:02:37.322147: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\36\tensorflow\core\common_runtime\gpu\gpu_device.cc:1105] Found device 0 with properties: 
name: GeForce GTX 1050 major: 6 minor: 1 memoryClockRate(GHz): 1.455
pciBusID: 0000:01:00.0
totalMemory: 2.00GiB freeMemory: 1.60GiB
2018-05-05 14:02:37.322485: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\36\tensorflow\core\common_runtime\gpu\gpu_device.cc:1195] Creating TensorFlow device (/device:GPU:0) -> (device: 0, name: GeForce GTX 1050, pci bus id: 0000:01:00.0, compute capability: 6.1)
2018-05-05 14:02:49.060262: W C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\36\tensorflow\core\common_runtime\bfc_allocator.cc:273] Allocator (GPU_0_bfc) ran out of memory trying to allocate 957.03MiB.  Current allocation summary follows.
(略)
2018-05-05 14:02:49.125925: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\36\tensorflow\core\common_runtime\bfc_allocator.cc:684] Sum Total of in-use chunks: 1012.71MiB
2018-05-05 14:02:49.126076: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\36\tensorflow\core\common_runtime\bfc_allocator.cc:686] Stats: 
Limit:                  1442503065
InUse:                  1061908480
MaxInUse:               1061908480
NumAllocs:                     172
MaxAllocSize:           1003520000

2018-05-05 14:02:49.126345: W C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\36\tensorflow\core\common_runtime\bfc_allocator.cc:277] ***************************************************************************_________________________
2018-05-05 14:02:49.126559: W C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\36\tensorflow\core\framework\op_kernel.cc:1198] Resource exhausted: OOM when allocating tensor with shape[10000,32,28,28] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc
Traceback (most recent call last):
  File "C:\Users\TAKANO\Anaconda3\envs\gputf15rc0\lib\site-packages\tensorflow\python\client\session.py", line 1350, in _do_call
    return fn(*args)
  File "C:\Users\TAKANO\Anaconda3\envs\gputf15rc0\lib\site-packages\tensorflow\python\client\session.py", line 1329, in _run_fn
    status, run_metadata)
  File "C:\Users\TAKANO\Anaconda3\envs\gputf15rc0\lib\site-packages\tensorflow\python\framework\errors_impl.py", line 473, in __exit__
    c_api.TF_GetCode(self.status.status))
tensorflow.python.framework.errors_impl.ResourceExhaustedError: OOM when allocating tensor with shape[10000,32,28,28] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc
     [[Node: Conv2D = Conv2D[T=DT_FLOAT, data_format="NHWC", dilations=[1, 1, 1, 1], padding="SAME", strides=[1, 1, 1, 1], use_cudnn_on_gpu=true, _device="/job:localhost/replica:0/task:0/device:GPU:0"](Reshape, Variable/read)]]
Hint: If you want to see a list of allocated tensors when OOM happens, add report_tensor_allocations_upon_oom to RunOptions for current allocation info.


During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/Users/TAKANO/PycharmProjects/180505_CNN/main.py", line 51, in <module>
    train_loss = sess.run(loss , feed_dict = {x:mnist.test.images , y:mnist.test.labels , keep_drop:1.0})
  File "C:\Users\TAKANO\Anaconda3\envs\gputf15rc0\lib\site-packages\tensorflow\python\client\session.py", line 895, in run
    run_metadata_ptr)
  File "C:\Users\TAKANO\Anaconda3\envs\gputf15rc0\lib\site-packages\tensorflow\python\client\session.py", line 1128, in _run
    feed_dict_tensor, options, run_metadata)
  File "C:\Users\TAKANO\Anaconda3\envs\gputf15rc0\lib\site-packages\tensorflow\python\client\session.py", line 1344, in _do_run
    options, run_metadata)
  File "C:\Users\TAKANO\Anaconda3\envs\gputf15rc0\lib\site-packages\tensorflow\python\client\session.py", line 1363, in _do_call
    raise type(e)(node_def, op, message)
tensorflow.python.framework.errors_impl.ResourceExhaustedError: OOM when allocating tensor with shape[10000,32,28,28] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc
     [[Node: Conv2D = Conv2D[T=DT_FLOAT, data_format="NHWC", dilations=[1, 1, 1, 1], padding="SAME", strides=[1, 1, 1, 1], use_cudnn_on_gpu=true, _device="/job:localhost/replica:0/task:0/device:GPU:0"](Reshape, Variable/read)]]
Hint: If you want to see a list of allocated tensors when OOM happens, add report_tensor_allocations_upon_oom to RunOptions for current allocation info.


Caused by op 'Conv2D', defined at:
  File "C:/Users/TAKANO/PycharmProjects/180505_CNN/main.py", line 16, in <module>
    h1_conv = tf.nn.relu(conv2d(tf.reshape(x , [-1,28,28,1]) , w1) + b1)
  File "C:\Users\TAKANO\PycharmProjects\180505_CNN\func_set.py", line 27, in conv2d
    return tf.nn.conv2d(x , W , strides = [1,1,1,1] , padding = "SAME")
  File "C:\Users\TAKANO\Anaconda3\envs\gputf15rc0\lib\site-packages\tensorflow\python\ops\gen_nn_ops.py", line 725, in conv2d
    data_format=data_format, dilations=dilations, name=name)
  File "C:\Users\TAKANO\Anaconda3\envs\gputf15rc0\lib\site-packages\tensorflow\python\framework\op_def_library.py", line 787, in _apply_op_helper
    op_def=op_def)
  File "C:\Users\TAKANO\Anaconda3\envs\gputf15rc0\lib\site-packages\tensorflow\python\framework\ops.py", line 3160, in create_op
    op_def=op_def)
  File "C:\Users\TAKANO\Anaconda3\envs\gputf15rc0\lib\site-packages\tensorflow\python\framework\ops.py", line 1625, in __init__
    self._traceback = self._graph._extract_stack()  # pylint: disable=protected-access

ResourceExhaustedError (see above for traceback): OOM when allocating tensor with shape[10000,32,28,28] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc
     [[Node: Conv2D = Conv2D[T=DT_FLOAT, data_format="NHWC", dilations=[1, 1, 1, 1], padding="SAME", strides=[1, 1, 1, 1], use_cudnn_on_gpu=true, _device="/job:localhost/replica:0/task:0/device:GPU:0"](Reshape, Variable/read)]]
Hint: If you want to see a list of allocated tensors when OOM happens, add report_tensor_allocations_upon_oom to RunOptions for current allocation info.



Process finished with exit code 1

 該当のソースコード

import numpy as np
import tensorflow as tf
import pickle


from func_set import *
from tensorflow.examples.tutorials.mnist import input_data

mnist = input_data.read_data_sets("MNIST_data/" , one_hot = True)
x = tf.placeholder(tf.float32 , [None,784])
y = tf.placeholder(tf.float32 , [None,10])

w1 = W_init([5,5,1,32])
b1 = B_init([32])

h1_conv = tf.nn.relu(conv2d(tf.reshape(x , [-1,28,28,1]) , w1) + b1)
h1_pool = max_pool2x2(h1_conv)

w2 = W_init([5,5,32,64])
b2 = B_init([64])

h2_conv = tf.nn.relu(conv2d(h1_pool , w2) + b2)
h2_pool = max_pool2x2(h2_conv)

w_fc1 = W_init([7*7*64,512])
b_fc1 = B_init([512])
h_fc1 = tf.nn.relu(tf.matmul(tf.reshape(h2_pool , [-1,7*7*64]) , w_fc1) + b_fc1)

#dropout
keep_drop = tf.placeholder(tf.float32)
h_fc1_drop = tf.nn.dropout(h_fc1 , keep_drop)

w_fc2 = W_init([512,10])
b_fc2 = B_init([10])
out = tf.nn.softmax(tf.matmul(h_fc1_drop , w_fc2) + b_fc2)

loss = Error_cross_entropy(out , y)
accu = accuracy(out , y)
train = AdamOptimizer(0.01 , loss)

init = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    for i in range(2000):
        batch = mnist.train.next_batch(2)
        feed_dict = {x:batch[0] , y:batch[1] , keep_drop:0.5}
        sess.run(train,feed_dict = feed_dict)
        if i % 10 == 0:
            train_accu = sess.run(accu , feed_dict = {x:batch[0] , y:batch[1] , keep_drop:1.0})
            train_loss = sess.run(loss , feed_dict = {x:mnist.test.images , y:mnist.test.labels , keep_drop:1.0})
            print("step:{} accuracy:{} loss:{}".format(i+1 , train_accu , train_loss))
    final_accu = sess.run(accu , feed_dict = {x:mnist.test.images , y:mnist.test.labels , keep_drop:1.0})
    print("Optimization DONE!")
    print("Final Accuracy:{}".format(final_accu))

 試したこと

他の方の質問を拝見したところ、「バッチサイズを小さくすればよい」という回答が
多く見受けられたため、バッチサイズを限界まで小さくしましたが、同じエラーが出ました。

 補足情報(FW/ツールのバージョンなど)

windows10 Home 64Bbit
Intel(R) Core(TM)i5-7400 CPU @3.00GHz
RAM8.00GB
GEFORCE GTX 1050
python3.6
tensorflow-gpu1.5.0rc0

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • wakame

    2018/05/05 22:37

    tensorflowってデフォルトでGPUのメモリを全部使おうとするので必要な分確保するような設定にしてあげればいいのではと思いました。

    キャンセル

  • wakame

    2018/05/06 15:49

    問題の切り分けとしてhttps://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/tutorials/mnist/mnist_deep.py 公式のminist チュートリアルを実行すると同じエラーになりますか

    キャンセル

  • nisekonsan

    2018/05/06 18:42

    チュートリアルを行ったところ、エラーメッセージも'test accuracy'も表示されない不思議な終わり方をしました。

    キャンセル

回答 1

+3

[追記]
質問文より抜粋

# with以下
with tf.Session() as sess:
    sess.run(init)
    for i in range(2000):
        batch = mnist.train.next_batch(2)
        feed_dict = {x:batch[0] , y:batch[1] , keep_drop:0.5}
        sess.run(train,feed_dict = feed_dict)
        if i % 10 == 0:
            train_accu = sess.run(accu , feed_dict = {x:batch[0] , y:batch[1] , keep_drop:1.0})
            train_loss = sess.run(loss , feed_dict = {x:mnist.test.images , y:mnist.test.labels , keep_drop:1.0})
            print("step:{} accuracy:{} loss:{}".format(i+1 , train_accu , train_loss))
    final_accu = sess.run(accu , feed_dict = {x:mnist.test.images , y:mnist.test.labels , keep_drop:1.0})
    print("Optimization DONE!")
    print("Final Accuracy:{}".format(final_accu))

上記を下記のように修正して実行するとどうなりますか。

with tf.Session() as sess:
    sess.run(init)
    for i in range(2000):
        batch = mnist.train.next_batch(2)
        feed_dict = {x:batch[0] , y:batch[1] , keep_drop:0.5}
        sess.run(train,feed_dict = feed_dict)
        if i % 10 == 0:
            train_accu = sess.run(accu , feed_dict = {x:batch[0] , y:batch[1] , keep_drop:1.0})
            # train_loss = sess.run(loss , feed_dict = {x:mnist.test.images , y:mnist.test.labels , keep_drop:1.0})
            print("step:{} accuracy:{}".format(i+1 , train_accu))
    # final_accu = sess.run(accu , feed_dict = {x:mnist.test.images , y:mnist.test.labels , keep_drop:1.0})
    print("Optimization DONE!")
    # print("Final Accuracy:{}".format(final_accu))

下記コードはTensorflow側で必要な分GPUのメモリを確保するコードですがこれをソースコードに組み込むとどうなりますか。

import tensorflow as tf

config = tf.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.Session(config=config)


Python: Keras/TensorFlow で GPU のメモリを必要な分だけ確保する
tensorflow - Allowing GPU memory growth

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/05 22:58

    ご回答ありがとうございます。上記コードを試してみましたが、同じエラーが発生しました。

    キャンセル

  • 2018/05/05 23:02

    思い当たる節があったのでちょっとやってみてほしいのですが
    nvidia-smi コマンドが使える状態であればコマンドを打ってもらってこちらコメントに記述してもらえますか。

    キャンセル

  • 2018/05/05 23:04

    疑っているのは今の状態ではGPUのメモリが解放出来ておらず、メモリを占有している状態でプログラムを走らせているためメモリが足らないというエラーが出ているのかなと。

    キャンセル

  • 2018/05/05 23:06

    これでよろしいでしょうか

    C:\Program Files\NVIDIA Corporation\NVSMI>nvidia-smi.exe
    Sat May 05 23:05:10 2018
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 385.54 Driver Version: 385.54 |
    |-------------------------------+----------------------+----------------------+
    | GPU Name TCC/WDDM | Bus-Id Disp.A | Volatile Uncorr. ECC |
    | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
    |===============================+======================+======================|
    | 0 GeForce GTX 1050 WDDM | 00000000:01:00.0 On | N/A |
    | 45% 30C P8 35W / 75W | 430MiB / 2048MiB | 1% Default |
    +-------------------------------+----------------------+----------------------+

    +-----------------------------------------------------------------------------+
    | Processes: GPU Memory |
    | GPU PID Type Process name Usage |
    |=============================================================================|
    | 0 104 C+G ...Files (x86)\Mozilla Firefox\firefox.exe N/A |
    | 0 1052 C+G Insufficient Permissions N/A |
    | 0 2536 C+G ...Files (x86)\Mozilla Firefox\firefox.exe N/A |
    | 0 2912 C+G ...Files (x86)\Mozilla Firefox\firefox.exe N/A |
    | 0 5432 C+G C:\Windows\explorer.exe N/A |
    | 0 5448 C+G ...Files (x86)\Mozilla Firefox\firefox.exe N/A |
    | 0 6300 C+G ...t_cw5n1h2txyewy\ShellExperienceHost.exe N/A |
    | 0 6444 C+G ...dows.Cortana_cw5n1h2txyewy\SearchUI.exe N/A |
    | 0 8296 C+G ...ogram Files (x86)\Overwolf\Overwolf.exe N/A |
    | 0 8856 C+G ...Files (x86)\Mozilla Firefox\firefox.exe N/A |
    | 0 9632 C+G ...ptions\Software\Current\LogiOverlay.exe N/A |
    | 0 10036 C+G ...x64__8wekyb3d8bbwe\Microsoft.Photos.exe N/A |
    | 0 10836 C+G ...Overwolf\0.112.2.37\OverwolfBrowser.exe N/A |
    | 0 10956 C+G ...Files (x86)\Mozilla Firefox\firefox.exe N/A |
    | 0 11124 C+G ...m Files\Logicool\SetPointP\SetPoint.exe N/A |
    | 0 11396 C+G ...mmersiveControlPanel\SystemSettings.exe N/A |
    +-----------------------------------------------------------------------------+

    C:\Program Files\NVIDIA Corporation\NVSMI>

    キャンセル

  • 2018/05/05 23:31

    とりあえず動くと思われるコードを回答部に追記しました。

    キャンセル

  • 2018/05/05 23:39

    動くようになりました!
    ”mnist.test.images” 部のサイズが大きく、ResourceExaustedErrorが起きていたということなのでしょうか?

    キャンセル

  • 2018/05/05 23:42

    結果を見るとそう見えますね。すみません、今眠くて今回の問題について解説できそうにないので明日解説をまとめようかなと思います。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Python

    7482questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • TensorFlow

    634questions