2022年08月03日 更新

TensorFlow実行時のDLL load failedエラーを回避する方法

どうも、クラゲジュニアです。

少し古いWindows PC(CPUがインテルCeleron N4100)でTensorFlow 2.2.0をインストールして実行したところ、以下のようなエラーが出ました。

ImportError: DLL load failed: ダイナミック リンク ライブラリ (DLL) 初期化ルーチンの実行に失敗しました。

Failed to load the native TensorFlow runtime.

import tensorflowを行うだけでも同じエラーが出ます。

原因

CPUがAVX(Advanced Vector Extensions)に対応していないためです。ちなみにAVXとは、CPUの拡張命令セットのひとつで処理を高速化するものです。古いCPUだと対応していない可能性があります。

AVXの対応有無の確認

ここは飛ばしても問題ありません。

インテル® プロセッサ 識別 ユーティリティをインストールすることで確認できます。

インテル®アドバンスド・ベクトル・エクステンションがAVXです。グレーアウトしているということは対応していないということです。

対策1

最も簡単なのは、TensorFlowのバージョンを1.5以下にすることです。AVX非対応でも動きます。

対策2

非公式ではありますが、AVX非対応のTensorFlowを使う方法です。

以下のリンク先はTensorFlow 2.2.0の場合ですが、ディレクトリを辿れば他のバージョンも見つかります。

tensorflow-windows-wheel

上記の3つのファイルをダウンロードします。7zipを展開できるソフトがPCにない場合はこちらからダウンロードしてインストールします。

展開すると以下のようなファイル名で、1つのファイルが出来上がります。

先に現状のTensorFlowはアンストールします。

pip unistall tensorflow

AVX非対応のtensorFlowをインストールします。

pip install tensorflow-2.2.0-cp37-cp37m-win_amd64.whl

これでOKです。

以上です。