【3分で解決】Keras(tensorflow)のfitを実行したら「OMP: Error」や「Abort trap: 6」エラーが出たときの対処方法

tensorflowに梱包されているKerasのfit関数を呼び出したら、なぜか、エラー「OMP: Error」「Abort trap: 6」が出力されて強制終了されてしまいました。

原因調査していたら対処方法が分かったので記事化します!

 

関連記事

いますぐにでもAI(機械学習)が学べるプログラミングスクールを検討している方へ! [afTag id=2402] [template id="10277"]   筆者について 筆者は、AIプログラミン[…]

 

「OMP: Error」「Abort trap: 6」エラーが発生したときのPythonのコード

エラーメッセージ

「OMP: Error #15: Initializing libiomp5.dylib, but found libiomp5.dylib already initialized.」

 

「Abort trap: 6」エラーが発生したとき、RNNで自然言語処理をしていました。

使っていたライブラリーは、Keras(tensorflow内に梱包)です。

 

 

問題が発生したコードはこんな感じ。

batch_size = 8  # バッチサイズ
n_in = 1 # 入力層のニューロン数
n_mid = 10 # 中間層のニューロン数
n_out = 1 # 出力層のニューロン数

#RNN定義
model = Sequential()
model.add(SimpleRNN(n_mid, input_shape=(n_rnn, n_in), return_sequences=True))
model.add(Dense(n_out, activation="linear"))
model.compile(loss="mean_squared_error", optimizer="sgd") 
print(model.summary())


#学習(ここでエラーが発生して強制終了)
history = model.fit(x, t, epochs=1, batch_size=batch_size, validation_split=0.1)

 

出力されたメッセージ

 

出力されたエラーメッセージは以下の通り。

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/.

原因と解消方法

 

原因

原因は、エラーメッセージのとおり「libiomp5.dylib」というライブラリーが、重複して呼ばれているようです。

 

解消方法

そこで、エラー内容の以下のヒントを確認します。

「 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」

 

環境変数に「KMP_DUPLICATE_LIB_OK=TRUE」を追加します。

「KMP_DUPLICATE_LIB_OK=TRUE」の意味は、ライブラリーの重複を検出しても処理を進めるというもののようです。

 

 

Pythonのコードでは、以下のように書くことができます。

 

import os
os.environ['KMP_DUPLICATE_LIB_OK']='TRUE'

 

詳しくは、以下のサイトを参考に

OMP Abort エラーが発生した場合の対処方法

 

「KMP_DUPLICATE_LIB_OK=TRUE」は、根本解決ではない

OMP Abort エラーが発生した場合の対処方法 にも以下のように記載されていますが、

「KMP_DUPLICATE_LIB_OK=TRUE」を追加する方法は、ライブラリーの競合を無視する設定のため、根本的な解決には至らないようです。

根本的な解決方法の一つとして、OpenCVバージョン1.1pre1を使う方法がありますが、わたしは、OpenCVについて詳しくないので「KMP_DUPLICATE_LIB_OK=TRUE」で対応しました。

関連記事

いますぐにでもAI(機械学習)が学べるプログラミングスクールを検討している方へ! [afTag id=2402] [template id="10277"]   筆者について 筆者は、AIプログラミン[…]

 

最新情報をチェックしよう!