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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

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

Q&A

3回答

2116閲覧

Mnistで学習が進まない。

Harumasa

総合スコア0

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

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

0グッド

0クリップ

投稿2021/06/03 01:44

編集2021/06/08 22:02

最近、GPU搭載のPCを購入して機械学習をし始めましたが、簡単なRNNでエラーが出てしまい、MNISTでコードを動かしたところ以下のようなエラーが出ます。なおRNNとMNISTでのエラーは同じものです。ネットではメモリ不足などとありますが、自分のGPUはGeforceであり、問題ないと思うのですが。ご回答よろしくお願いします。
解決方法を教えてください。コメントアウトしているところはそれぞれ試みましたが解決しませんでした。
以下コードです。

python

1import os 2os.environ['TF_FORCE_GPU_ALLOW_GROWTH'] = 'true' 3 4import numpy as np 5from sklearn.model_selection import train_test_split 6import tensorflow as tf 7from tensorflow.keras.datasets import mnist 8from tensorflow import keras 9from tensorflow.keras.layers import Dense, Activation 10from tensorflow.keras.models import Sequential 11from tensorflow.keras.utils import to_categorical 12# tf.Session(config=tf.ConfigProto(device_count = {'GPU': 1})) 13 14# config = tf.ConfigProto() 15# config.gpu_options.allow_growth=True 16# sess = tf.Session(config=config) 17 18# gpus = tf.config.experimental.list_physical_devices('GPU') 19# for gpu in gpus: 20# tf.config.experimental.set_memory_growth(gpu, True) 21 22# config = tf.compat.v1.ConfigProto() 23# config.gpu_options.allow_growth = True 24# session = tf.compat.v1.Session(config=config) 25 26# gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.9) 27 28# tf.Session(config=tf.ConfigProto(gpu_options=gpu_options,allow_soft_placement=True)) 29 30 31np.random.seed(0) 32(X_train_base, labels_train_base), (X_test, labels_test) = mnist.load_data() 33 34X_train,X_validation,labels_train,labels_validation = train_test_split(X_train_base,labels_train_base,test_size = 0.2) 35 36 37X_train = X_train.reshape(-1,784) 38X_validation = X_validation.reshape(-1,784) 39X_test = X_test.reshape(-1,784) 40 41 42X_train = X_train.astype('float32') 43X_validation = X_validation.astype('float32') 44X_test = X_test.astype('float32') 45X_train /= 255 46X_validation /= 255 47X_test /= 255 48 49y_train = to_categorical(labels_train) 50y_validation = to_categorical(labels_validation) 51y_test = to_categorical(labels_test) 52 53 54n_features = 784 55n_hidden = 100 56bias_init = 0.1 57 58 59rate = 0.01 60 61 62model = Sequential() 63 64 65model.add(Dense(n_hidden,activation='relu',input_shape=(n_features,))) 66model.add(Dense(n_hidden,activation='relu')) 67model.add(Dense(n_hidden,activation='relu')) 68 69 70model.add(Dense(10,activation='softmax')) 71 72 73model.compile(optimizer=tf.optimizers.Adam(rate), 74 loss='categorical_crossentropy', metrics=['mae', 'accuracy']) 75 76 77log = model.fit(X_train, y_train, epochs=3000, batch_size=100, verbose=True, 78 callbacks=[keras.callbacks.EarlyStopping(monitor='val_loss', 79 min_delta=0, patience=10, 80 verbose=1)], 81 validation_data=(X_validation, y_validation)) 82 83 84pred_test = model.predict_classes(X_test) 85 86validation = (pred_test == labels_test) 87size = validation.size 88size 89correct = np.count_nonzero(validation) 90print(f"{correct}/{size} correct ({correct*100/size:.3f}%)")

エラーは以下のようにでます。

python

1WARNING:tensorflow:From /home/suzukiharumasa/anaconda3/envs/tf/lib/python3.7/site-packages/tensorflow_core/python/ops/resource_variable_ops.py:1630: calling BaseResourceVariable.__init__ (from tensorflow.python.ops.resource_variable_ops) with constraint is deprecated and will be removed in a future version. 2Instructions for updating: 3If using Keras pass *_constraint arguments to layers. 4Train on 48000 samples, validate on 12000 samples 5Epoch 1/300 6--------------------------------------------------------------------------- 7InternalError Traceback (most recent call last) 8<ipython-input-3-a31cdad43806> in <module> 9 48 min_delta=0, patience=10, 10 49 verbose=1)], 11---> 50 validation_data=(X_validation, y_validation)) 12 51 13 52 # Test dataで予測を実行。 14 15~/anaconda3/envs/tf/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_freq, max_queue_size, workers, use_multiprocessing, **kwargs) 16 725 max_queue_size=max_queue_size, 17 726 workers=workers, 18--> 727 use_multiprocessing=use_multiprocessing) 19 728 20 729 def evaluate(self, 21 22~/anaconda3/envs/tf/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training_arrays.py in fit(self, model, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_freq, **kwargs) 23 673 validation_steps=validation_steps, 24 674 validation_freq=validation_freq, 25--> 675 steps_name='steps_per_epoch') 26 676 27 677 def evaluate(self, 28 29~/anaconda3/envs/tf/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training_arrays.py in model_iteration(model, inputs, targets, sample_weights, batch_size, epochs, verbose, callbacks, val_inputs, val_targets, val_sample_weights, shuffle, initial_epoch, steps_per_epoch, validation_steps, validation_freq, mode, validation_in_fit, prepared_feed_values_from_dataset, steps_name, **kwargs) 30 392 31 393 # Get outputs. 32--> 394 batch_outs = f(ins_batch) 33 395 if not isinstance(batch_outs, list): 34 396 batch_outs = [batch_outs] 35 36~/anaconda3/envs/tf/lib/python3.7/site-packages/tensorflow_core/python/keras/backend.py in __call__(self, inputs) 37 3474 38 3475 fetched = self._callable_fn(*array_vals, 39-> 3476 run_metadata=self.run_metadata) 40 3477 self._call_fetch_callbacks(fetched[-len(self._fetches):]) 41 3478 output_structure = nest.pack_sequence_as( 42 43~/anaconda3/envs/tf/lib/python3.7/site-packages/tensorflow_core/python/client/session.py in __call__(self, *args, **kwargs) 44 1470 ret = tf_session.TF_SessionRunCallable(self._session._session, 45 1471 self._handle, args, 46-> 1472 run_metadata_ptr) 47 1473 if run_metadata: 48 1474 proto_data = tf_session.TF_GetBuffer(run_metadata_ptr) 49 50InternalError: 2 root error(s) found. 51 (0) Internal: Blas GEMM launch failed : a.shape=(100, 100), b.shape=(100, 100), m=100, n=100, k=100 52 [[{{node dense_1/MatMul}}]] 53 [[loss/mul/_93]] 54 (1) Internal: Blas GEMM launch failed : a.shape=(100, 100), b.shape=(100, 100), m=100, n=100, k=100 55 [[{{node dense_1/MatMul}}]] 560 successful operations. 570 derived errors ignored. 58

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2021/06/03 02:21

コードは「コードの挿入」で記入してください。
Harumasa

2021/06/03 02:26

すいませんでした。更新し直しました。よろしくお願いします
jbpb0

2021/06/08 22:38

> ネットではメモリ不足などとありますが、自分のGPUはGeforceであり、問題ないと思うのですが。 GeForceも機種によって搭載メモリーサイズが違います お使いの機種は何でしょうか?
Harumasa

2021/06/08 22:46

コメントありがとうございます。 使用しているのはGEFORCE RTX 3090でございます。1枚だけなのですが、メモリ的には十分だと思うのですが、
jbpb0

2021/06/08 22:49

十分すぎますね
jbpb0

2021/06/09 02:47

回答に書いたように、このコードでの実質的なGPUメモリー使用量は非常に少ないので、メモリー不足で落ちることは普通は起きないと思います 何か、環境構築上で問題があるのではないでしょうか? もしそうなら、エラー回避をコードで工夫しようとしても、なかなか解決しないかもしれません たとえば、PyTorchでもGPUを使う簡単なコードを動かしてみるとか mnistでもいいですし PyTorchでは大丈夫なら、TensorFlowが怪しいので入れ直してみるとか PyTorchでもダメなら、CUDAが怪しいので入れ直してみるとか
guest

回答3

0

当方のGeForce GTX 1080 Ti (メモリー11GB)で、すんなり動きました
ただし、TensorFlow 1.*での結果なので、参考になるかどうか

コードは、下記だけ変更しないと、エラーで動きませんでした (たぶんTF 1.*だから)
model.compile(optimizer=tf.optimizers.Adam(rate),

model.compile(optimizer=tf.keras.optimizers.Adam(rate),

環境は、下記の通りです
Windows 10
CUDA10.0, cuDNN7.4
Python 3.7.9
tensorflow-gpu 1.15.3

コード実行時のGPUメモリー全使用量は、下記の通り
(下記の「コード追加」は、「os.environ...」のこと)
コード追加無し:9.9GB
コード追加有り:0.6GB (ただし、コード実行直前に0.4GB使用されていた)

投稿2021/06/08 23:41

jbpb0

総合スコア7653

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

TensorFlowがGPUのメモリーを使いすぎるのが原因なら、

python

1import tensorflow...

よりも上に、下記を追加してみてください

python

1import os 2os.environ['TF_FORCE_GPU_ALLOW_GROWTH'] = 'true'

参考
https://teratail.com/questions/307392

投稿2021/06/08 21:49

jbpb0

総合スコア7653

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Harumasa

2021/06/08 22:04

ご回答ありがとうございます。試みたのですが、それでも解決しませんでした。 なお、試みたこととして質問のところに追加しました。
jbpb0

2021/06/08 22:47 編集

GPUのメモリー使用量をモニターしながら、コードを実行してみてください https://dev.classmethod.jp/articles/monitor-nvidia-gpu-usage-with-nvidia-smi-nvsmi/ ・コード実行前は、GPUメモリーがほとんど使われてないか?  もしそこそこ使われてるなら、何かGPUを使う残骸プロセスが残ってるのかもしれない ・実行時のGPUメモリー使用量は、私が提示したコードの追加の有無で変わるか?  コード追加してもGPUメモリー使用量の余裕が変わらないなら、batch_size=100を思いっきり減らしてみる  TensorFlowは、コード追加しなければ、必要無くてもGPUメモリーのほとんどを確保してしまう  コード追加すれば、必要な分だけ確保するはずなので、batch_sizeを十分に減らせば、それなりに使用量減るはず ・エラー発生時に、GPUメモリーの残り量はあるか?  コード追加(+必要に応じてbatch_sizeの調整)でGPUメモリー残り量が十分増えたけれどエラー出るなら、原因が違うかも
guest

0

ネットで調べた限りでは、

How to prevent tensorflow from allocating the totality of a GPU memory?

の問題の可能性が高いそうです。
つまり、tensorflowがGCUメモリを確保してしまい、残りのメモリが足りないということが起きる場合があるようです。

解決策は、

config.gpu_options.allow_growth=True

らしいので、

How to prevent tensorflow from allocating the totality of a GPU memory?

とか、

Release GPU memory after computation #1578

の中で検索して試してみると解決できるかもしれません。

投稿2021/06/03 04:32

ppaul

総合スコア24670

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Harumasa

2021/06/04 06:24

すいません。上記のサイトの方法で試したのですが、まだ解決できません。 他の方法はありませでしょうか。また、追加の情報が必要であれば共有いたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問