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

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

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

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

受付中

カーネルが異常終了ししまいます。githubから拾ってきたコードを動かしたいです。

kane_study
kane_study

総合スコア4

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0回答

0評価

0クリップ

1360閲覧

投稿2020/12/11 05:35

カーネルが異常終了ししまいます。
githubから拾ってきたコードを動かしたいです。

学習するタイミングでなぜかカーネルがダメになります。

記事を読んで調べているのですが、解決できず...
どうやらkerasに問題がある可能性があるというとこまでは分かりました。


Jupyter Notebookでも同じ現象ができました。
windowsでも実験したのですが、os以外がが同じ条件の環境だと何故か、
load_imgsで失敗しました。

コード(一部)は以下の通りです。

#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Fri Dec 11 13:11:40 2020 @author: kasu """ import tensorflow as tf import numpy as np import matplotlib import matplotlib.pyplot as plt %matplotlib inline import os import cv2 from PIL import Image config = tf.compat.v1.ConfigProto(gpu_options=tf.compat.v1.GPUOptions(allow_growth=True)) sess = tf.compat.v1.Session(config=config) tf.compat.v1.keras.backend.set_session(sess) root_dir = '/Users/ユーザー名/Desktop/killme_adversarial_example_with_TensorFlow-Keras-master2/kill_me_images/kill_me_baby_datasets/' class_list = sorted(os.listdir(path=root_dir)) print("クラスリスト", class_list) def load_imgs(root_dir): print(class_list) num_class = len(class_list) img_paths = [] labels = [] images = [] for cl_name in class_list: img_names = os.listdir(os.path.join(root_dir, cl_name)) for img_name in img_names: img_paths.append(os.path.abspath(os.path.join(root_dir, cl_name, img_name))) hot_cl_name = get_class_one_hot(cl_name, class_list) labels.append(hot_cl_name) for img_path in img_paths: img = cv2.imread(img_path) img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) images.append(img) images = np.array(images) return np.array(images), np.array(labels), class_list ############ ここから学習モデルを作成 ########### batch_size = 32 vgg16 = tf.keras.applications.VGG16(include_top=False, weights='imagenet', classes=7, input_shape=(128, 128, 3)) vgg16.trainable = False inputs = tf.keras.Input(shape=vgg16.output.shape[1:]) x = tf.keras.layers.Flatten()(inputs) x = tf.keras.layers.Dense(256, activation='relu')(x) x = tf.keras.layers.Dropout(0.5)(x) logits = tf.keras.layers.Dense(len(class_list), name='logits')(x) out = tf.keras.layers.Activation('softmax')(logits) top_model = tf.keras.Model(inputs=inputs, outputs=out) model = tf.keras.Model(inputs=vgg16.input, outputs=top_model(vgg16.output)) # 最後の畳み込み層の前までの重みの更新はしない。 # 15層目が最後の畳み込み層の開始位置 for layer in model.layers[:15]: layer.trainable = False # 学習方法を設定する model.compile(loss='categorical_crossentropy', optimizer=tf.keras.optimizers.Adam(), metrics=['accuracy']) tb_cb = tf.keras.callbacks.TensorBoard(log_dir="log_dir") ckps = [tb_cb] # 学習用データを用意する train_datagen = tf.keras.preprocessing.image.ImageDataGenerator(rescale=1./255, horizontal_flip=True) train_generator = train_datagen.flow_from_directory('kill_me_images/kill_me_baby_datasets/', classes=class_list, target_size=(128, 128), batch_size=batch_size, class_mode='categorical') # 学習開始! model.fit_generator(train_generator, steps_per_epoch=train_generator.samples//batch_size, epochs=100, callbacks=ckps) model.save("models/killme_vgg16.h5") sess = tf.keras.backend.get_session() saver = tf.train.Saver() saver.save(sess, "models/killme_vgg16.ckpt")

エラー文
2020-12-11 13:23:42.055353: I tensorflow/core/common_runtime/process_util.cc:115] Creating new thread pool with default inter op setting: 12. Tune using inter_op_parallelism_threads for best performance.
Found 685 images belonging to 7 classes.
Epoch 1/100

Restarting kernel...

[SpyderKernelApp] WARNING | No such comm: 4b7859de3b6811ebae7bacde48001122

環境
Anaconda、Spyder、mac

importしたもの
opencv 3.4.2
tensorflow 2.00
numpy 1.19.2

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

jbpb0

2020/12/11 09:31 編集

Windows PC(メモリー8GB、GPU無し)で実行したところ、1Epochあたり30秒以上かかってメチャ遅いですが、落ちずに実行できました Jupyter NotebookではなくAnaconda Promptで実行しました python 3.7.9 tensorflow 1.15.3 コードの変更点は、下記だけです ・画像のフォルダ名を変更 (2ヵ所)   Windowsは、フォルダ区切りの「¥」(円マーク)を二つ並べるか、「r'C:\Users\...'」のように「r」を付ける必要がある ・「%matplotlib inline」の行頭に「#」を付けてコメント化 (実行したのがJupyter Notebookではないため)
kane_study

2020/12/13 10:34

ありがとうございます。 そのバージョンで試してみます。申し訳ございません。 使用されたopenCVのバージョンもご教授頂けないでしょうか? 何卒宜しくお願い申し上げます。 補足ですが、 私は、githubの情報が古かったので、一応pythonの古いバージョン(3.5、3.6)で試しましたが、 やはりダメでした。 容量やメモリはかなり余裕があるので、 おそらくバージョンの問題なのではないかと考えております。
kane_study

2020/12/13 10:38

申し訳ございません。 もう1点補足ががございました。 tensorflowの1.を使っている場合は 「combat.v1」はコードを外して動かしております。 こちらは、私がコードを追加した内容になります。
jbpb0

2020/12/13 12:46

OpenCVは4.4.0.46です tf.compat.v1... は、付けたままでもtensorflow 1.15.3で大丈夫でした
kane_study

2020/12/13 16:16

ありがとうございます。 試してみます。 ちなみにですが、原因はやはりバージョンと考えるのが順当でしょうか?
kane_study

2020/12/13 19:58

申し訳ございません。 openCV4.4.0を コマンドやanacondaから入れようとしているのですが、 python3.8以上でしか使えないというエラーが出ました。 何か特殊な方法でインストールする方法があるのでしょうか?
jbpb0

2020/12/14 02:30

> windowsでも実験したのですが、os以外がが同じ条件の環境だと何故か、load_imgsで失敗しました。 私の最初のコメントにも書きましたが、Windowsはフォルダ名の指定の仕方に癖があるので、ご注意ください (「\」(円マーク)を使わずに「/」だけ使えば、大丈夫だったかも)
jbpb0

2020/12/14 02:38

> 容量やメモリはかなり余裕があるので > 原因はやはりバージョンと考えるのが順当でしょうか? 画像が数枚しか入ってないフォルダを数個だけ作ってそこを指定し、batch_sizeをうんと小さく(2とか4とか)にしてみて、コードの他はそのままで、試しに実行してみたらいかがでしょうか?? それでも落ちるのなら、メモリー不足ではないでしょうね
kane_study

2020/12/14 19:39

ありがとうございます。 申し訳ございません。 Anaconda側に問題(パッケージが入らない原因)があったようです。 今はMacで作業しております。 カーネルが異常終了する理由はメモリーでは無いようでした。
kane_study

2020/12/14 19:41

理由はわかりませんが os.environs['KMP_DUPLICATE_LIB_OK']='TRUE' という一文を加えた所、学習がスタートしました。
jbpb0

2020/12/15 00:12 編集

もしかして、tensorflowをcondaで入れてませんか? https://github.com/tensorflow/tensorflow/issues/24106 には、condaのをアンインストールしてpipでインストールしたら直った、って書かれてます ただし、2年前の情報なので、現在のtensorflowでもそれで直るかは、分かりません (質問者さんがtennsorflowをpipで入れてたら関係無いし)
jbpb0

2020/12/15 00:08

インテルのドキュメント https://docs.openvinotoolkit.org/latest/openvino_docs_IE_DG_Known_Issues_Limitations.html によると、環境変数 KMP_DUPLICATE_LIB_OK を設定する方法はパフォーマンスが低下したり結果が不正確になったりするので、環境変数 LD_PRELOAD を設定する方法が推奨されてます ただし、python起動前に LD_PRELOAD 設定しておかないと効果が無いかもしれません (python内のどこかで libiomp5.so が最初に読み込まれる前に設定したら効果があるかもしれないけど、やってみないと分からない)
jbpb0

2020/12/15 00:47

上記インテルのドキュメントに書かれてるように、OpenMPの共有ライブラリ(libiomp5.so)がOS内に複数あり、別のものが同時に読み込まれて競合しているのが原因のようです さまざまなpythonモジュール(numpy, opencv, tensorflow...)がOpenMPを利用しているので、それらのどれかが矛盾を引き起こしてるのでしょう LD_PRELOADを設定すると、そこで指定されたものが最優先に強制的に使われるので競合が起きなくなる、ということみたいです https://siguniang.wordpress.com/2015/05/15/override-functions-with-ld_preload/
kane_study

2020/12/15 03:00

ありがとうございます。 現在はtensorflowとmatplotlibはAnacondaの画面から入れて、openCVはpipで入れました。 numpyは最初から入ってます。 別の方法(仮装環境で)も試しましたが同じ結果でした。 (全てAnacondaのパターン、全て「conda install 」のパターン) 憶測ですが、バージョンが噛み合わせなければコンフリクトを起こすのかもしれません。
kane_study

2020/12/15 03:04

KMP_DUPLICATE_LIB_OKを使うと不正が出る可能性があるのですね。 ただ、環境変数を設定するのは少し怖いです。 以前に誤ってPCの中をグチャグチャにしてしまった事があるので。
jbpb0

2020/12/15 04:56

> (全てAnacondaのパターン、全て「conda install 」のパターン) Anacondaでの操作で裏で動くのはcondaなので、上記は同じ結果になるはずです 仮想環境を作って比較してみるなら、condaとpipでしょう (tensorflowもpip)
jbpb0

2020/12/15 05:07

https://lightgbm.readthedocs.io/en/latest/FAQ.html#lightgbm-crashes-randomly-with-the-error-like-initializing-libiomp5-dylib-but-found-libomp-dylib-already-initialized は、tensorflowではなくLightGBMのFAQですが、別の解決策が書かれてます Anacondaのnumpyが参照しているmklパッケージが原因だそうです ・AnacondaのOpenMPのライブラリを、Homebrewで入れたOpenMPのライブラリに置き換える ・AnacondaをMKL無しでインストールする ご参考までに (もし実行するなら、自己責任で)
kane_study

2020/12/15 05:50

ありがとうございます。 condaとpipはコンフリクトを起こす (同じものだと起こしにくい)と考えてました。 実験してみます。
jbpb0

2020/12/15 05:54

同じパッケージに、あるときはconda、あるときはpipを使うと、こんがらがっておかしくなります どちらかしか使わないと決めてそれを守れば、たいていは大丈夫です pipで入れたtensorflowは、アップデートもpipをずっと使う、とすれば、絶対大丈夫という保証はできませんが、私の経験ではそれで(これまでは)大丈夫でした と言っても、万が一ということもあるので、試すのでしたら仮想環境で (そして自己責任で)
kane_study

2020/12/15 08:14

ちょっと実験したのですが、厳しいようでした。 今回はこれで走らせて、次のコード修正に入り、 改めて再度、パッケージの方を検討しようかと思います。 申し訳ございません。
jbpb0

2020/12/15 08:32

KMP_DUPLICATE_LIB_OK を使っても、必ず結果がおかしくなるというわけでもないでしょうし、結果を確認して大丈夫なら、それでいいと思いますよ
kane_study

2020/12/15 11:20

はい。一旦はそうしようかと思います。 申し訳ございません。terateilの初心者的な質問なのですが 回答を頂いているのにも関わらず、「ベストアンサー?」のボタンが表示されないです。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。