🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Keras

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

Python

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

Q&A

解決済

1回答

4801閲覧

jupyter notebookを使った機械学習における異常終了

ra-mentabetai

総合スコア3

Keras

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

Python

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

0グッド

0クリップ

投稿2020/12/05 13:56

編集2020/12/06 01:05

前提・実現したいこと

あるpythonを使う機械学習の講座を受けています。
その講座で用いられるコードをjupyter notebook上で試したのですがどうしても上手くいきません。
お力をお貸しくださいorz

実際に使用したコードを以下に示します。
::
import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator

train_datagen = ImageDataGenerator(rescale = 1./255,shear_range = 0.2,zoom_range = 0.2,horizontal_flip = True)

training_set = train_datagen.flow_from_directory('dataset/training_set',target_size = (64, 64),batch_size = 32,class_mode = 'binary')

test_datagen = ImageDataGenerator(rescale = 1./255)

test_set = test_datagen.flow_from_directory('dataset/test_set',target_size = (64, 64),batch_size = 32,class_mode = 'binary')

cnn = tf.keras.models.Sequential()
cnn.add(tf.keras.layers.Conv2D(filters=32, kernel_size=3, activation='relu', input_shape=[64, 64, 3]))
cnn.add(tf.keras.layers.MaxPool2D(pool_size=2, strides=2))
cnn.add(tf.keras.layers.Conv2D(filters=32, kernel_size=3, activation='relu'))
cnn.add(tf.keras.layers.MaxPool2D(pool_size=2, strides=2))
cnn.add(tf.keras.layers.Flatten())
cnn.add(tf.keras.layers.Dense(units=128, activation='relu'))
cnn.add(tf.keras.layers.Dense(units=1, activation='sigmoid'))
cnn.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])

cnn.fit(x = training_set, validation_data = test_set, epochs = 25)
::
この処理ではdatasetフォルダの中に各訓練データ、テストデータが内包されていて、そのデータを元に畳み込みニューラルネットワークを使って機械学習させています。
■■な機能を実装中に以下のエラーメッセージが発生しました。
jupyter notebookでは一行ずつコードを入力していき、処理が進まなくなったのは上記の最終行です。cnn.fit()で訓練データによるモデルの訓練を実施しているときに本来ならば進むはずの処理が進まず、処理が異常終了してしまう形になります。

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

コードの出力上は

Train for 250 steps, validate for 63 steps Epoch 1/25

で止まっていて、本来ならばEpochが2/25,3/25.....と徐々に大きくなって処理が進んでいきます。

上の画像は実際にjupyter notebook上で表示されたエラーメッセージです。
いったい何が起こっているのでしょうか。

該当のソースコード

python

1cnn.fit(x = training_set, validation_data = test_set, epochs = 25)

試したこと

anacondaを最新版にした。
講義で必要だと言われたpillow,scipy,tensorflowのパッケージはインストールしてあることを確認した。
pythonのバージョンは3.6でした。

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

anacondaからjupyter notebookを開いて使っています。
Udemyの講師の方にはメモリの不足を示唆されましたが納得できません。
イメージ説明
どうなんでしょう実行中・後のメモリ使用率?の推移ですが...
今はmac book air でCPUがcorei5,メモリは8Gbなのですが、このような機械学習のプログラミングにはスペック不足になるのでしょうか....

ターミナルの画面にヒントになりそうな文章が出現しました!どんな意味なのでしょうか?

Shuffle buffer filled.
OMP: Error #15: Initializing libiomp5.dylib, but found libiomp5.dylib already initialized.
OMP: Hint This means that multiple copies of the OpenMP runtime have been linked into the program. That is dangerous, since it can degrade performance or cause incorrect results. The best thing to do is to ensure that only a single OpenMP runtime is linked into the process, e.g. by avoiding static linking of the OpenMP runtime in any library. As an unsafe, unsupported, undocumented workaround you can set the environment variable KMP_DUPLICATE_LIB_OK=TRUE to allow the program to continue to execute, but that may cause crashes or silently produce incorrect results. For more information, please see http://www.intel.com/software/products/support/.
[I 10:00:36.812 NotebookApp] KernelRestarter: restarting kernel (1/5), keep random ports
kernel 80ab163a-e346-4e45-aa41-fdbf202c2460 restarted

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

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

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

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

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

meg_

2020/12/05 14:05

> Udemyの講師の方にはメモリの不足を示唆されましたが納得できません。 納得できない理由は何ですか? メモリ(GPU?)の使用率はどのくらいでしたか? 実際に訓練中のメモリの推移を確認した上で他の可能性を探っているのでしょうか?
jbpb0

2020/12/05 14:45

訓練データとテストデータはそれぞれ、どれくらいあるのでしょうか?
tiitoi

2020/12/05 15:27 編集

8GBだとOSや他のアプリに占有されてるのをのぞいたら実質数GBしか使えないと思うのでさすがに厳しいと思います メモリ不足の可能性がかなり高いです
ra-mentabetai

2020/12/05 15:42

なるほど。実際に空き容量がない場合、maxまでメモリを使わずして処理が進まないことになるのですか...
ra-mentabetai

2020/12/05 15:44

訓練データ、テストデータのデータ容量はそれぞれ181Mb、46Mbとなっております。
tiitoi

2020/12/05 16:27

>実際に空き容量がない場合、maxまでメモリを使わずして処理が進まないことになるのですか 例えばメモリの空きが1GBだとして、4GBのメモリ確保をしようとした場合は、allocation エラーでその時点でプログラムは落ちます
ra-mentabetai

2020/12/05 17:11

なるほど。やっぱりしっかりプログラミングするには16Gb程のメモリが必要になるのですね。 皆様ご回答いただきありがとうございました。
guest

回答1

0

自己解決

メモリの不足の可能性大

投稿2020/12/05 17:12

ra-mentabetai

総合スコア3

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問