1
2

More than 1 year has passed since last update.

特定バージョンのtensorflowのインストールができないときの対処法

Last updated at Posted at 2022-02-14

はじめに

tensorflowで作成した深層学習モデルを学習させるときに,以下のようなエラーで学習ができず新たな仮想環境の構築を行なったのでまとめます.

Conv2DCustomBackpropInputOp only supports NHWC.

このエラーはおそらくCPU環境においてtensorflow2系でモデルの定義で data_format = "channels_first" 1とすると発生するもので,このエラーへの対処法は以下の二通りが考えられます.

  1. データ形状とモデルのdata_formatを全てchannels_lastにする
  2. tensorflowをダウングレードする

ここでは二つ目のtensorflowをダウングレードする方法について紹介します.
今回はWindowsのPython3の環境でtensorflowのバージョン1.8.0へのダウングレードを行います.
MacやLinuxでも似た流れで実行できると思います.

今回の流れ

今回の流れは以下の通りです.

  1. 現状の確認
  2. tensorflowのバージョン1.8.0に対応しているPython3系の調査
  3. 調査で判明したバージョンのPythonのインストール
  4. インストールしたPythonで仮想環境構築 (venv使用)
  5. tensorflowのバージョン1.8.0のインストール

現状の確認

とりあえずtensorflowのバージョン1.8.0のインストールを試みます.

$ pip install tensorflow==1.8.0
ERROR: could not find a version that satisfies the requirement tensorflow==1.8.0
(from versions: 2.5.0rc0, 2.5.0rc1, 2.5.0rc2, 2.5.0rc3, 2.5.0, 2.5.1, 2.5.2, 2.5.3, 2.6.0rc0, 2.6.0rc1,
2.6.0rc2, 2.6.0, 2.6.1, 2.6.2, 2.6.3, 2.7.0rc0, 2.7.0rc1, 2.7.0, 2.7.1, 2.8.0rc0, 2.8.0rc1, 2.8.0)
ERROR: no matching distribution found for tensorflow==1.8.0

$ python -V
Python 3.9.10

Python3.9においてtensorflowのバージョン1.8.0はインストールの候補になく,インストールすることができません.
そこでtensorflowのバージョン1.8.0に対応しているPythonを探すことから始めます.

tensorflowのバージョン1.8.0に対応しているPython3系の調査

まず https://pypi.org/ にアクセスして,検索欄で "tensorflow" と検索します.
検索すると以下の画像のように様々なパッケージが出てくるので,tensorflowに該当するもの(下の画像では一番上の tensorflow 2.8.0)をクリックします.

pypi_tensorflow.png

tensorflowのページが開いたら,左側の"Release history"をクリックします.
そうすると下の画像のようにtensorflowの様々なバージョンが一覧になって出てくるので,バージョン1.8.0を探してクリックします.

pypi_tensorflow_rh.png

tensorflowのバージョン1.8.0のダウンロードファイルは下の画像になっています.
ここで下の画像の赤枠で示した部分に注目すると,これがtensorflowのバージョン1.8.0に対応しているPythonのバージョンを表しています.
下の画像ではcp27からcp36まで,つまりPython2.7とPython3.3からPython3.6までが対応しており,これらのPythonを導入する必要があるとわかります.

pypi_tensorflow_3.png

もし既に導入しているPythonがPython2.7かPython3.3からPython3.6までの場合はtensorflowのバージョン1.8.0のインストールに進んでください.
現在のPythonのバージョンは以下のコマンドで確認できます.

$ python3 -V

対応するPythonのインストール

前の調査でtensroflow1.8.0を使うためにはPython3系ではPython3.3からPython3.6が必要であることが分かったので,Python3.6のインストールを行います.

まず https://www.python.org/downloads/windows/ にアクセスして,Python3.6を探します.
Windows向けのインストーラが用意されている中で最も新しいPython3.6が3.6.8だったので,下の画像の赤枠の "Download Windows x86-64 executable installer" をクリックしてインストールを行います.

python_1.png

インストールの際にインストールを行う場所をメモしておいてください.
通常は以下の場所にインストールされると思います. (usernameは適宜変更してください.)

$ C:\Users\username\AppData\Local\Programs\Python\Python36

インストールしたPythonで仮想環境構築

様々なパッケージをルート環境にインストールすると,パッケージの依存関係でパッケージが正常に動作しなくなることがあるので,仮想環境を作成して作業を行うのが良いと思います.
Pythonで仮想環境を構築する方法として,ここではvenvを用いて仮想環境構築を行います.

ここからの操作はWindowsのコマンドプロンプトで実行します.

venvはPython3.6では標準で使用可能な仮想環境作成コマンドで,以下のコマンドで仮想環境を構築することができます.
ここで作成する仮想環境名を myenv,仮想環境を構築するフォルダの絶対パスを C:\Users\username\myenv とします.
仮想環境名と絶対パスは適宜変更してください.

$ C:\Users\username\AppData\Local\Programs\Python\Python36\python -m venv C:\Users\username\myenv

これで仮想環境を構築できたので,以下のコマンドで仮想環境を実行します.

$ C:\Users\username\myenv\Scripts\activate

上記のコマンドを実行し,以下のように今いる絶対パスの前に (myenv) が付いていれば,仮想環境の実行ができています.

(myenv) C:\Users\username>

ここで念のために仮想環境内のPythonのバージョン確認を行います.
実行結果が以下のようになっていれば問題ありません.

(myenv) C:\Users\username> python -V
Python 3.6.8

仮想環境を終了するときは以下のコマンドで終了できます.

(myenv) C:\Users\username> deactivate

tensorflowのバージョン1.8.0のインストール

tensorflowのバージョン1.8.0をインストールする場合は以下のコマンドでインストールできます.

(myenv) C:\Users\username> pip install tensorflow==1.8.0

tensorflowがバージョン1.8.0でインストールできているかは以下のコマンドで検証できます.

(myenv) C:\Users\username> python
>>> import tensorflow
>>> print(tensorflow.__version__)
1.8.0

最後に

ここではtensorflowのバージョン1.8.0のインストールに関して扱いましたが,他のバージョンについても同様の方法で環境構築が可能だと思います.

参考資料


  1. channels_firstとは,tensorflowでのデータの形状を表します.channels_firstはデータの形状がNCHW(ミニバッチのデータ数,チャンネル,高さ,幅)の順に並んでいます.一方,channels_lastはNHWC(ミニバッチのデータ数,高さ,幅,チャンネル)の順に並んだデータ形状を指します.TensorFlowのデフォルトのデータ形状はchannels_lastです. 

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2