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

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

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

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

CNN (Convolutional Neural Network)

CNN (Convolutional Neural Network)は、全結合層のみではなく畳み込み層とプーリング層で構成されるニューラルネットワークです。画像認識において優れた性能を持ち、畳み込みニューラルネットワークとも呼ばれています。

Python

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

PyCharm

エディター・開発ツール

解決済

ディープラーニングの学習過程におけるエラーについて

kyoro.
kyoro.

総合スコア2

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

CNN (Convolutional Neural Network)

CNN (Convolutional Neural Network)は、全結合層のみではなく畳み込み層とプーリング層で構成されるニューラルネットワークです。画像認識において優れた性能を持ち、畳み込みニューラルネットワークとも呼ばれています。

Python

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

PyCharm

エディター・開発ツール

1回答

0リアクション

0クリップ

1146閲覧

投稿2022/08/26 01:27

前提

ディープラーニングの学習を始めようと考え、インターネットでプログラムを拾い、実行できるか確認しているところです。

実現したいこと

プログラムを走らせると Epoch 1/5 が表示され一時停止、数秒後に
「Process finished with exit code -1073740791 (0xC0000409)」
が表示されプログラムが停止してしまいます。
このエラーについて調べたのですが私の知識が乏しく理解できる対処法が見当たらなかったため、よろしければアドバイスをいただければと考えております。

プログラミングの学習を始めてたばかりの初心者なので、無茶苦茶なプログラムになっているかもしれませんがご容赦ください。
また、解決に必要な情報がありましたら教えていただければ幸いです。

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

Process finished with exit code -1073740791 (0xC0000409)

該当のソースコード

#1 ライブラリのインポート等 import keras import glob import numpy as np import tensorflow as tf from sklearn.model_selection import train_test_split from keras.models import Sequential from keras.layers import Conv2D, MaxPooling2D from keras.layers import Dense, Dropout, Flatten #from keras.utils import plot_model #これはKerasのバージョンなどにより使えないのでコメントアウト from keras.utils import np_utils #keras.utils.to_categoricalでエラーが出るので追加 # from keras.optimizers import Adam # ここでエラーとなるので以下のコードに変更 import matplotlib.pyplot as plt import time #2 各種設定 train_data_path = 'C:/Users/my/PycharmProjects/pythonProject2/image' # ここを変更。Colaboratoryにアップロードしたzipファイルを解凍後の、データセットのフォルダ名を入力 image_size = 28 # ここを変更。必要に応じて変更してください。「28」を指定した場合、縦28横28ピクセルの画像に変換します。 color_setting = 1 #ここを変更。データセット画像のカラー:「1」はモノクロ・グレースケール。「3」はカラー。 folder = ['yakiimo', 'yakisoba', 'yakitori'] # ここを変更。データセット画像のフォルダ名(クラス名)を半角英数で入力 class_number = len(folder) print('今回のデータで分類するクラス数は「', str(class_number), '」です。') #3 データセットの読み込みとデータ形式の設定・正規化・分割 X_image = [] Y_label = [] for index, name in enumerate(folder): read_data = train_data_path + '/' + name files = glob.glob(read_data + '/*.jpg') #ここを変更。png形式のファイルを利用する場合のサンプルです。 print('--- 読み込んだデータセットは', read_data, 'です。') for i, file in enumerate(files): if color_setting == 1: img = tf.keras.preprocessing.image.load_img(file, color_mode = 'grayscale' ,target_size=(image_size, image_size)) elif color_setting == 3: img = tf.keras.preprocessing.image.load_img(file, color_mode = 'rgb' ,target_size=(image_size, image_size)) array = tf.keras.preprocessing.image.img_to_array(img) X_image.append(array) Y_label.append(index) X_image = np.array(X_image) Y_label = np.array(Y_label) X_image = X_image.astype('float32') / 255 #Y_label = keras.utils.to_categorical(Y_label, class_number) #Kerasのバージョンなどにより使えないのでコメントアウト Y_label = np_utils.to_categorical(Y_label, class_number) #上記のコードのかわり train_images, valid_images, train_labels, valid_labels = train_test_split(X_image, Y_label, test_size=0.10) x_train = train_images y_train = train_labels x_test = valid_images y_test = valid_labels #4 機械学習(人工知能)モデルの作成 – 畳み込みニューラルネットワーク(CNN)・学習の実行等 model = Sequential() model.add(Conv2D(16, (3, 3), padding='same', input_shape=(image_size, image_size, color_setting), activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Conv2D(128, (3, 3), padding='same', activation='relu')) model.add(Conv2D(256, (3, 3), padding='same', activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.5)) model.add(Flatten()) model.add(Dense(128, activation='relu')) model.add(Dropout(0.25)) model.add(Dense(class_number, activation='softmax')) model.summary() #plot_model(model, to_file='model.png') #ここはKerasのバージョンなどにより使えないのでコメントアウト model.compile(loss='categorical_crossentropy', optimizer=tf.keras.optimizers.Adam(), metrics=['accuracy']) start_time = time.time() # ここを変更。必要に応じて「batch_size=」「epochs=」の数字を変更してみてください。 history = model.fit(x_train,y_train, batch_size=2, epochs=5, verbose=1, validation_data=(x_test, y_test)) plt.plot(history.history['accuracy']) plt.plot(history.history['val_accuracy']) plt.title('Model accuracy') plt.ylabel('Accuracy') plt.xlabel('Epoch') plt.grid() plt.legend(['Train', 'Validation'], loc='upper left') plt.show() plt.plot(history.history['loss']) plt.plot(history.history['val_loss']) plt.title('Model loss') plt.ylabel('Loss') plt.xlabel('Epoch') plt.grid() plt.legend(['Train', 'Validation'], loc='upper left') plt.show() open('cnn_model.json','w').write(model.to_json()) model.save_weights('cnn_weights.h5') #model.save('cnn_model_weight.h5') #モデル構造と重みを1つにまとめることもできます score = model.evaluate(x_test, y_test, verbose=0) print('Loss:', score[0], '(損失関数値 - 0に近いほど正解に近い)') print('Accuracy:', score[1] * 100, '%', '(精度 - 100% に近いほど正解に近い)') print('Computation time(計算時間):{0:.3f} sec(秒)'.format(time.time() - start_time))

以下のような質問にはリアクションをつけましょう

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

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

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

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

適切な質問に修正を依頼しましょう。

jbpb0

2022/08/26 02:22

> インターネットでプログラムを拾い 差し支えなければ、入手したurlを教えてください
jbpb0

2022/08/26 08:40

当方のwin 10のpythonで実行してみましたが、正常に終了しました 質問のコードから、下記の三つの行のみ変えました train_data_path = r'C:\Users\XXX\Downloads\flower_photos' color_setting = 3 folder = ['daisy', 'dandelion', 'roses', 'sunflowers', 'tulips'] 画像は下記を使いました https://www.kaggle.com/datasets/imsparsh/flowers-dataset 環境は下記の通り Python 3.7.13 tensorflow 2.8.2 keras 2.8.0 CUDA 11.2 cuDNN 8.1
kyoro.

2022/08/26 11:43

親切な回答をして頂きましてありがとうございます! 大学のパソコンで勉強しており本日は帰宅してしまったため、明日確認させて頂きます。 お忙しい中お待たせしてしまいますが、正常に動作しなかった際には再度助言して頂ければ幸いです。
kyoro.

2022/08/27 02:08

すみません、大学でこの土日一斉停電でパソコンが使えなかったので月曜に確認します。 遅くなってしまい申し訳ございません。
kyoro.

2022/08/29 01:51

遅くなってしまい申し訳ございません。 hbpb0さんのアドバイス通りコードの #2各種設定 の箇所を train_data_path = r'C:\Users\XXX\Downloads\flower_photos' image_size = 28 color_setting = 3 folder = ['daisy', 'dandelion', 'roses', 'sunflowers', 'tulips'] class_number = len(folder) print('今回のデータで分類するクラス数は「', str(class_number), '」です。') に変更して実行しましたが応答はやはり Epoch 1/5 が表示されたのちエラーコードが出てしまいました。 また、公式のコードも実行してみましたが Epoch 1/10 の後に同様のエラーが出てしまいました。
kyoro.

2022/08/29 02:06

また、環境が windows11(64bit) anaconda 4.13.0 python 3.9.12 TensorFlow 2.9.1 CUDA 11.7 cuDNN 8.4.1 なのですがこちらに問題があるのでしょうか。 度々申し訳ございませんがご教授いただければ幸いです。
jbpb0

2022/08/29 06:28 編集

tensorflow公式のチュートリアルが実行できないなら、tensorflowがまともに使える状態にないということです そのパソコンの管理(アプリのインストールとか)をしてる方が他に居るなら、その方に相談することをお勧めします > python 3.9.12 TensorFlow 2.9.1 CUDA 11.7 cuDNN 8.4.1 https://www.tensorflow.org/install/source_windows?hl=en#gpu (「日本語」ではなく「English」のページ) の「GPU」の表のtensorflow2.9のところを見ると、cuda 11.2, cudnn 8.1と書かれてるので、gpuを使うならそのバージョンを入れる必要があります ただし、そのバージョンが入ってなければcpuで計算されるだけで、それが原因でtensorflowが落ちることはありません pythonは3.7〜3.10なので、大丈夫ですね > anaconda 4.13.0 https://repo.anaconda.com/archive/ を見てもanaconda3-4.13というものはありませんし、 https://docs.anaconda.com/anaconda/packages/oldpkglists/ を見てもやはり4.13はありませんが、バージョン合ってます? anaconda 4.13.0ではなくてconda 4.13.0のこと?
kyoro.

2022/08/29 06:18

>cuda 11.2, cudnn 8.1と書かれてるので、gpuを使うならそのバージョンを入れる必要があります Englishページと内容が異なっているのですね!CUDAとcuDNNを入れなおしてみます。 >anaconda 4.13.0ではなくてconda 4.13.0のこと? そうです、誤解させてしまいすみません。
kyoro.

2022/08/29 07:01

先ほどcuda11.2をインストールしたのですがwin11ではやはりcuda11.5以降しか扱えないようです。 ちなみに、 python 3.9.12 TensorFlow 2.9.1 CUDA 11.7 cuDNN 8.4.1 の環境にしていた理由としてはこちらurlのサイトで示されていたためなのですが、この環境は間違っているのでしょうか? https://www.kkaneko.jp/tools/man/man.html#tensorflowversions
jbpb0

2022/08/29 07:44 編集

https://www.kkaneko.jp/tools/man/man.html#tensorflowversions の「TensorFlow, PyTorch のバージョンも何でも良い」が意味が分かりませんが、それ以外のところだけ読むと、 ・cudaのバージョンは何でもいい ・TensorFlow, PyTorchを使わない なら、cuda 11.7, cndnn 8.4.1を入れろ、という意味になります では、tensorflowを使いたい場合はどうするかですが、先のコメントで提示した公式ページのgpuの表を見ると分かりますけど、tensorflowのバージョンとcuda, cudnnのバージョンの間には縛りがあるので、tensorflowのバージョンに関わらずcuda 11.7, cndnn 8.4.1を入れればいい、なんてことになるはずはないです ただし、先のコメントにも書きましたが、対応するcudaのバージョンが入ってなくてもgpuを使って計算できないだけで、cpuで計算できるはずなので、計算が途中で止まって落ちる原因はそこではないと思います
kyoro.

2022/08/29 07:44

・cudaのバージョンは何でもいい ・TensorFlow, PyTorch のバージョンも何でも良い この二文からcudaとcudnnのバージョンを決めたのですが実際は違うということですね。 すると、結論からいうとwin11でtensorflowを使う場合cudaとcudnnのバージョンはいくつにすれば正常に動作するのでしょうか。 また、先ほど載せたこちらのサイトのプログラムは修正前の環境で正常に動作した、ということはtensorflowは動作しているという認識は誤っているのでしょうか。
kyoro.

2022/08/29 07:55

>対応するcudaのバージョンが入ってなくてもgpuを使って計算できないだけで、cpuで計算できるはずなので、計算が途中で止まって落ちる原因はそこではないと思います 質問の趣旨とは異なりますが、気になったのでよろしければご教授していただきたいです。 プログラムを走らせているときにタスクマネージャでGPUのパフォーマンスを見たのですが、正常に動作したこちらのサイト(https://qiita.com/ymiura17/items/651e6aa3611ef8f12e92)の場合は学習中にGPUのパフォーマンスが100%近くまで上昇しておりました。 また、質問に用いたプログラムでも瞬間的にではありますがGPUのパフォーマンスは100%になっていたのでGPUは使えていそうですが実際はどうなのでしょうか。
jbpb0

2022/08/29 08:24 編集

> win11でtensorflowを使う場合cudaとcudnnのバージョンはいくつにすれば正常に動作するのでしょうか。 https://medium.com/@Gunter-Pearson/installing-latest-tensorflow-version-with-cuda-cudnn-and-gpu-support-on-windows-11-pc-e41fac5c5795 を見ると、公式ページのgpuの表を参照して、win 11にtensorflow 2.7, cuda 11.2, cndnn 8.1を入れるように書かれてます cudaをダウンロードするところにはwin 10しかないけど、それでwin 11で動く、みたいに書かれてます なので、公式ページの表のtensorflow 2.9のところに書かれてるのを入れたら動くと思います ただし、私はtensorflow 2.8までしか使ったことはないので、2.9で絶対にその組み合わせで動くのか? と聞かれても保証はできません 公式ページの記述が間違ってる可能性も、全く無いとは言えないからです (合ってる可能性の方がはるかに高いと思いますが) あと、一旦cudaの新しいのを入れて、その後に古いのを入れようとすると、「NVIDIAインストーラーを続行できません(既に新しいのが入ってるので...)」的なエラーが出ることがありますが、それは回避する方法があります https://webbigdata.jp/study/post-9499 の「GeForce Experienceのアンインストール」を見てください > 先ほど載せたこちらのサイトのプログラムは修正前の環境で正常に動作した、ということはtensorflowは動作しているという認識は誤っているのでしょうか。 動くものもあるけど、動かないものもある、が正しい認識ですよね 動くものだけ動けばよくて、動かないのは諦めるのなら、お好きなように もし私なら、最低限公式のチュートリアルが動かなければ、ちゃんと動作してるとは思いません
kyoro.

2022/08/29 08:11

なるほど、ありがとうございます!勉強になります! 明日、再度教えて頂いたサイトを参考に環境を再構築してみたいと思います。 何度もお手数をお掛けしてしまい大変申し訳ございません。
jbpb0

2022/08/29 08:42 編集

> 質問に用いたプログラムでも瞬間的にではありますがGPUのパフォーマンスは100%になっていたのでGPUは使えていそう cudaのバージョンが違ってても、もしdllのファイル名が同じなら、tensorflowはファイル名だけで検索するので、dllを見つけたらそれを使うので、gpuを使おうとします 実際にcuda 11.2と11.7のdllのファイル名が同じかを確認したわけではないので、「もしファイル名が同じなら」という仮定の話です 以下は、上記のようなファイル名が同じという状態を前提とした、想像です 最後まで実行できる場合は、cudaのバージョン間の違いが現れないようなcudaの使い方なのでしょう 瞬間的に100%になって落ちる場合は、cudaのバージョン間で相違点があり、そこを使おうとして失敗してるのでしょう あくまでも想像ですが 【追記】 cuda 11.2, 11.3をインストールしてるパソコンでdllのファイル名を比べたら、ファイル名が違うのは二つだけで、ほとんどのファイルは同じ名前でした おそらく11.7でもほとんどのファイル名は11.2と同じだと思うので、11.7を入れててもtensorflow 2.9はそのdllを使うので、gpuは(エラーで落ちなければ)使えますね
jbpb0

2022/08/29 08:50

> 明日、再度教えて頂いたサイトを参考に環境を再構築してみたいと思います。 cudaを入れ直す前に、環境変数からcudaとかnvidiaとか付いてるのを全部(戻せるようにメモしてから)削除してから、tensorflowで公式チュートリアルとか、この質問のコードとかを動かしてみることをお勧めします その場合はcpuで計算しますが、それで(遅いけど)落ちなくて実行できたら、落ちる原因は十中八九cudaにあります もしcpuでも落ちるなら、pythonから入れ直した方がいいかもしれない
kyoro.

2022/08/29 09:18

すごく丁寧に教えて下さりありがとうございます。。! しっかりと身につけれるように教えてくださること一つ一つ自分でも考え、理解しながら進めさせていただきます!
kyoro.

2022/08/30 06:46

ありがとうございました! CPUのみではプログラムを実行できたので、GPUに問題があることがわかり、教えていただいたサイトの通りにCUDA等インストールし直した結果無事にプログラムをGPUを使って実行することができました。 この度はとても助かりました、改めてありがとうございました。

まだ回答がついていません

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

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

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

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

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

CNN (Convolutional Neural Network)

CNN (Convolutional Neural Network)は、全結合層のみではなく畳み込み層とプーリング層で構成されるニューラルネットワークです。画像認識において優れた性能を持ち、畳み込みニューラルネットワークとも呼ばれています。

Python

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

PyCharm

エディター・開発ツール