Python {Article025}

ようこそ「Python」へ...

TensorFlow(GPU), KerasをWindows11に確実にインストールするための手順【Visual Studio Code編】

ここではPythonの機械学習用のオープンソースライブラリ「TensorFlow 2.6」とニューラルネットワークライブラリ「Keras」をWindows 11にインストールするための手順を解説します。 なお、ここで解説するのはMicrosoftの開発ツールVisual Studio Codeを使用してPythonのアプリケーションを開発することを前提にしています。 Jupter Notebookを使用してPythonのアプリケーションを開発する場合のインストール手順は、 「記事(Article024)」を参照してください。

TensorFlow 2.6はCPUのみの環境とCPU+GPUの双方を使用する環境が用意されています。 今回インストールするPCにはNVIDIAのGeForce GTX750Tiが組み込まれている環境なので「CPU+GPU」が使用できます。 「GPU」が組み込まれていないPCにTensorFlowをインストールについては、 「記事(Article121)」で解説しています。

TensorFlowをインストールするには64-Bitの「PC、Windows OS, Python」が必要になります。 ここではDELL XPS(NVIDIA GTX750Ti)、Windows 11(64-Bit)、Python 3.9.x(64-Bit)の環境にインストールします。

ここではVisula Studio Code(VSC)の「Python Interactive window」 を使用してJupter(IPython Notebook)のような環境で説明します。 VSCを通常の環境からインタラクティブな環境に切り換えるにはコードを記述するときコメント「# %%」を入力します。 詳しい、操作手順については「ここ」 を参照してください。 インタラクティブな環境では、Pythonの「print(), plt.show()」などを使う必要がないので掲載しているコードでは省略しています。 VSCで通常の環境で使用するときは、必要に応じて「print(), plt.show()」等を追加してください。

この記事では、Pandas、Matplotlibのライブラリを使用しますので 「記事(Article001) | 記事(Article002) | 記事(Article003) | 記事(Article004)」 を参照して事前にインストールしておいてください。 Pythonのコードを入力するときにMicrosoftのVisula Studio Codeを使用します。 まだ、インストールしていないときは「記事(Article001)」を参照してインストールしておいてください。

説明文の左側に図の画像が表示されていますが縮小されています。 画像を拡大するにはマウスを画像上に移動してクリックします。 画像が拡大表示されます。拡大された画像を閉じるには右上の[X]をクリックします。 画像の任意の場所をクリックして閉じることもできます。

click image to zoom!
Task Manager
click image to zoom!
Bitcoin Price
click image to zoom!
Visual Studio Code

Windows 11にPythonのライブラリTensorFlow(GPU) 2.xとKerasをインストールする

  1. Python 3.9.x(64-bit)をインストールする

    まずは「Python公式サイト」からPython 3.9.x(64-bit)をダウンロードしてインストールします。 ダウンロードが完了したら「python-3.9.x-amd64.exe」をダブルクリックしてインストールします。 インストール画面が表示されたら指示に従ってインストールを完了させます。 インストールするときPythonのインストール先フォルダをWindowsのメモ帳などにコピペしておきます。 インストールが完了したらWindows 11のコマンドプロンプトを開いてPythonのバージョン番号と64-bitかどうかを確認します。 インストール手順の詳細は各図の説明を参照してください。
    Python 3.9.xのデフォルトのインストール先:
    C:\Users\...\AppData\Local\Programs\Python\Python39
    
    click image to zoom!
    図1-1
    Pythonの公式サイトからPython 3.9.7の64-bit版をクリックしてダウンロードしてインストールします。
    click image to zoom!
    図1-2
    Windows 11の「スタート」ボタンから検索窓に「cmd prompt」を入力します。 「コマンドプロンプト」が表示されたら右側から「管理者として実行」をクリックして起動します。
    click image to zoom!
    図1-3
    コマンドプロンプトが表示されたら行1の「python --version」をコピペして[Enter]で実行します。 「Python 3.9.7」が表示されることを確認します。 次に行3の「python」をコピペしたら[Enter]で実行します。 Pythonが起動して「>>>」が表示されたら行5-6をコピペして[Enter]で実行します。 「64bit」が表示されればOKです。 コマンドプロンプトから[X]をクリックして終了させます。
    python --version
    
    python
    
    import sys
    is64Bit = sys.maxsize > 2 ** 32
    print("64bit") if is64Bit else print("32bit")

  2. Microsoft Visual C++ Redistributable for Visual Studio xxxをダウンロードしてインストールする

    ここ」から、 Microsoft Visual C++ Redistributable for Visual Studioの最新版をダウンロードしてインストールします。

    click image to zoom!
    図2
    MicrosoftのVisual Studioのサイトから「X64」の「https://aka.ms.../vc_redist.x64.exe」をクリックしてダウンロードします。 ダウンロードが完了したら「VC_redist.x64.exe」をダブルクリックしてインストールします。
  3. Pythonの仮想環境(pytf)を作成する

    まずはPythonのアプリケーションを作成するフォルダ「例: ...\PythonProject」を作成します。 次に管理者としてWindows 11のコマンドプロンプトを開きます。

    click image to zoom!
    図3
    コマンドプロンプトが表示されたら行1の「cd ...\PythonProject」をコピペして[Enter]で実行します。 これで「PythonProject」フォルダに移動します。

    次に行3(python -m ...)をコピペして[Enter]で実行します。 ここではPythonの仮想環境を「pytf」の名前で作成します。 必要ならば書き換えてから[Enter]で実行してください。 Pythonの仮想環境はカレントのフォルダに作成されます。 Pythonの仮想環境のフォルダ(パス)はVisual Studio Codeを使用するときに必要になるので、 行4のパスをWindowsのメモ帳などに保存しておいてください。

    Pythonの仮想環境(pytf)を作成したら行5(...activate)をコピペして[Enter]で実行します。 これで仮想環境(pytf)が「Active」になります。 仮想環境から元の状態に戻るには行7(deactivate)をコピペして[Enter]で実行します。 再度Pythonの仮想環境にするには行5(...activate)をコピペして[Enter]で実行します。
    cd C:\xps8700\PythonProject
    
    python -m venv --system-site-packages .\pytf
    # Pythonの仮想環境はカレントのフォルダに作成される: C:\xps8700\PythonProject\pytf
    .\pytf\Scripts\activate
    
    deactivate
  4. TensorFlow(GPU) 2.xをインストールする

    Pythonの仮想環境(pytf)にTensorFlow 2.xをインストールします。

    click image to zoom!
    図4
    コマンドプロンプトに行1(pip insall ...)をコピペしたら[Enter]で実行します。 TensorFlowのインストールが開始されます。 TensorFlowのインストールには数分かかることもあります。 完了するまでしばらく待ってください。
    pip install --upgrade tensorflow
  5. Kerasをインストールする

    Pythonの仮想環境(pftf)にKerasをインストールします。

    click image to zoom!
    図5
    コマンドプロンプトに行1(pip install ...)をコピペして[Enter]で実行します。 Kerasのインストールが開始されます。 通常KerasはTensorFlowのインストール時にインストールされるのですぐ終了するはずです。
    pip install keras
  6. NVIDIA GPU drivers(CUDA 11.x)をインストールする

    ここ」からGEFORCE Driverをダウンロードしてインストールします。 インストール手順の詳細は図の説明をご覧ください。

    click image to zoom!
    図6-1
    NVIDIAのGEFORCE DRIVERSのAUTOMATIC DRIVER UPDATESから「DOWNLOAD NOW」をクリックしてダウンロードします。 ダウンロードが完了したら「GeForce_Experience_v3.23.0.74.exe」をダブルクリックして実行します。
    click image to zoom!
    図6-2
    NVIDIA GeForce Experienceが表示されたら[同意/インストール]をクリックしてインストールします。
    click image to zoom!
    図6-3
    トップメニューから「ドライバー」を選択したら右側の「更新プログラムの確認」をクリックして最新のドライバーに更新します。
  7. CUDA Toolki(CUDAT 11.x)をインストールする

    ここ」から、CUDA Toolkit 11.5.0をダウンロードしてインストールします。 インストール手順の詳細は図の説明をご覧ください。

    click image to zoom!
    図7-1
    NVIDIAのCUDA Toolkit 11.4 Downloadsから「CUDA Toolkit 11.5.0 」をクリックします。
    click image to zoom!
    図7-2
    Select Target Platformから「Windows」、「x86_64」、「11」、「exe(local)」を選択したら、 最後に[Download]をクリックしてダウンロードします。 ダウンロードが完了したら「cuda_11.5.0_496.13_win10.exe」をダブルクリックして実行します。
    click image to zoom!
    図7-3
    CUDA Toolkitのインストールが起動して、NVIDIA CUDA バージョン 11.5が表示されたら[同意して続行する]をクリックします。
    click image to zoom!
    図7-4
    インストールオプションから「高速」を選択して[次へ]をクリックします。
    click image to zoom!
    図7-5
    「Nsight Visual Studio Edition Summary」が表示されたら[次へ]をクリックします。 そして「NVIDIAインストーラーが終了しました」のメッセージが表示されたら[閉じる]ボタンをクリックして終了します。
  8. cuDNN SDK 8.2.4.15をインストールする

    ここ」からcuDNN SDKをダウンロードしてインストールします。 インストール手順の詳細は図の説明をご覧ください。

    click image to zoom!
    図8-1
    cuDNN Archiveが表示されたら「cuDNN Library for Windows (x64)」をクリックしてダウンロードします。 ダウンロードが完了したらZipファイル「cudnn-11.4-windows-x64-v8.2.2.26.zip」を展開します。
    click image to zoom!
    図8-2
    Zipファイル「cudnn-11.4-windows-x64-v8.2.2.26.zip」を展開したら、 「cuda」フォルダ内のサブフォルダ「bin」「include」「lib」のファイルを 「C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.2.4.15」フォルダにコピーします。 ファイルのコピーはCopyコマンドではなくWindows 11のファイルエクスプローラーで行ってください。
    Copy {installpath}\cuda\bin\cudnn*.dll to C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.2.4.15\bin
    Copy {installpath}\cuda\include\cudnn*.h to C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.2.4.15\include
    Copy {installpath}\cuda\lib\x64\cudnn*.lib to C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.2.4.15\lib
    
    click image to zoom!
    図8-3
    Windows 11の「スタート」から検索窓に「システム環境変数編集」を入力して検索したらコントロールパネルを起動してシステムのプロパティを表示します。 「システムのプロパティ」から[環境変数]をクリックします。 なお、コントロールパネルは「管理者」の権限で実行する必要があります。

    「環境変数」の「システム環境変数」から「Path」を選択して[編集]をクリックします。 「Path」の「環境変数名編集」が表示されたら[新規]をクリックして行1の「cuDNN version v8.2.4.15」のパスをコピペして登録します。 これでTensorFlowからGPUが使用できるようになります。
    C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.2.4.15\bin
    click image to zoom!
    図8-4
    TensorFlowがGUPを使用できる状態になっているか確認するには、Windows 11のコマンドプロンプトを表示したら行1(cd C:\...)をコピペして[Enter]で実行します。 次に行3(...\activate)をコピペして[Enter]で実行します。 これでPythonの仮想環境(pytf)に切り替わります。 次に行5(python)をコピペして[Enter]で実行します。 これでPythonが起動します。 この状態で行7-11をコピペして[Enter]で実行します。最後にもう一度[Enter]を押すと処理が完了します。 「GUP is available」が表示されることを確認します。
    cd C:\xps8700\PythonProject
    
    .\pytf\Scripts\activate
    
    python    
    
    import sys
    import tensorflow as tf
    print(f"Tensor Flow Version: {tf.__version__}")
    gpu = len(tf.config.list_physical_devices('GPU'))>0
    print("GPU is", "available" if gpu else "NOT AVAILABLE")
  9. Visual Studio CodeでTensorFlowが使用できるか確認する

    Microsoftの開発ツール Visual Studio Code(64-bit)でTensorFlowが使用できるか確認します。 Visual Studio Codeをまだインストールしていないときは、 「ここ」をクリックしてWindows 11(64 bit)版をインストールします。 インストールが完了したらVisual Studio Code(VSC)を起動します。 以降の手順は図の説明をご覧ください。

    click image to zoom!
    図9-1
    VSCが起動したら[File]...[Open Folder...]を選択して「PythonProject」フォルダを選択します。
    click image to zoom!
    図9-2
    この状態で[Ctrl+Shift+P]でコマンドパレットを開きます。 そして検索窓に「select interpreter」を入力して検索します。 一覧から「Python: Select Interpreter」を選択します。

    「インタープリターを選択」の画面が表示されたら「+ Enter interpreter path...」をクリックして 入力領域(テキストボックス)に行1(C:\...\PythonProject\pytf)をコピペします。 [Enter]でVSCがPythonの仮想環境(pftf)に切り替わります。
    C:\xps8700\PythonProject\pytf   # Pythonの仮想環境(pftf)のパス
    click image to zoom!
    図9-3
    VSCの[Exploer]から[New File]をクリックしたら「TensorFlow Hello World.py」を入力します。
    click image to zoom!
    図9-4
    行1-21をコピペしたらStart[▶]をクリックして実行します。 Pandas、sklearnのライブラリをインストールしていないときは、 VSCのTerminalウィンドウから「pip install」でインストールしてください。 pip installのコマンドはコメントに記載しています。 なお、TerminalウィンドウからインストールしたPythonのライブラリを有効にするにはVSCを再起動する必要があります。

    VSCのTerminalウィンドウに図の画像のようなメッセージが表示されれば、 正常にインストールされたことになります。
    import os
    os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3' 
    # 0 = all messages are logged (default behavior)
    # 1 = INFO messages are not printed
    # 2 = INFO and WARNING messages are not printed
    # 3 = INFO, WARNING, and ERROR messages are not printed
    
    import sys
    import tensorflow.keras
    import pandas as pd     # pip install pandas
    import sklearn as sk    # pip install -U scikit-learn
    import tensorflow as tf
    
    print(f"Tensor Flow Version: {tf.__version__}")
    print(f"Keras Version: {tensorflow.keras.__version__}")
    print()
    print(f"Python {sys.version}")
    print(f"Pandas {pd.__version__}")
    print(f"Scikit-Learn {sk.__version__}")
    gpu = len(tf.config.list_physical_devices('GPU'))>0
    print("GPU is", "available" if gpu else "NOT AVAILABLE")

ビットコインの価格を予測するプログラムでGPUの稼働状況を調べてみる

  1. Visual Studio Codeを起動する

    Windows 11からVisual Studio Code(VSC)を起動します。

    click image to zoom!
    図10-1
    Visual Studio Codeが表示されたら[Ctrl+O]で[Open Folder]のダイアログを表示します。 ダイアログが表示されたら「PythonProject」のフォルダを選択します。
    click image to zoom!
    図10-2
    [Ctrl+Shift+P]でVSCのコマンドパレットを表示します。 コマンドパレットの一覧から「Python: Select Interpreter」を選択します。 「インタープリターを選択」の一覧から「Python 9.9.7 64-bit('pytf': venv)」を選択します。
    click image to zoom!
    図10-3
    VSCのメインウィンドウの左下に「Python 3.9.7 64-bit('pypf(: venv)」が表示されていることを確認します。
  2. 仮想通貨(暗号通貨)の価格を取得して予測する

    Visual Studio Code(VSC)から[Explorer]、[New File]のアイコンをクリックしてテキストボックスに 「TensorFlow Predictiong Crypto Prices in Python.py」を入力します。 プログラムの編集ウィンドウが表示されたら行1-96のコードをコピペします。 行10-24のPythonライブラリの「import」でエラーが表示されるときは、 VSCの「TERMINAL」ウィンドウから「pip install ...」で該当するライブラリをインストールします。 pip installのコマンドはコメントで記載しています。 なお、VSCのTERMINALウィンドウからpip installでインストールしたライブラリを有効にするにはVSCを再起動する必要があります。

    エラーがないことを確認したらGPUの稼働状況を調べるためにWindows 11のタスクマネージャーを起動します。 タスクマネージャーはWindows 11の[スタート]から検索窓に「Task Manager」を入力して起動します。 タスクマネージャーが起動したら「パフォーマンス」-「GPU 1」を選択します。 Visual Studio Codeから[▶]ボタンをクリックしてプログラムを実行します。 プログラムが実行されたらタスクマネージャーを監視してGPUの稼働状況を見ます。 プログラムが終了すると最後に仮想通貨(暗号通貨)のグラフが表示されます。 ここに表示されている仮想通貨(暗号通貨)の実価格(Actual Prices)はPandasのDataReaderでYahoo!Financeから取得しています。
    # TensorFlow Predicting Crypto Prices in Python.py
    import os
    os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
    # In detail:-
    # 0 = all messages are logged (default behavior)
    # 1 = INFO messages are not printed
    # 2 = INFO and WARNING messages are not printed
    # 3 = INFO, WARNING, and ERROR messages are not printed
    
    import numpy as np              # pip install numpy or # pip install numpy==1.19.5 
    import matplotlib.pyplot as plt # pip install matplotlib
    import pandas as pd             # pip install pandas
    import pandas_datareader as web # pip install pandas-datareader
    import datetime as dt
    
    # pip install tensorflow
    # pip install sklearn
    # pip install scikit-learn
    
    from sklearn.preprocessing import MinMaxScaler
    from tensorflow.keras import models
    from tensorflow.keras.layers import Dense, Dropout, LSTM
    from tensorflow.keras.models import Sequential
    from tensorflow.python.keras.backend import dropout
    
    crypto_currency = 'BTC'
    against_currency = 'USD'
    
    start = dt.datetime(2016,1,1)
    end = dt.datetime.now()
    
    data = web.DataReader(f'{crypto_currency}-{against_currency}', 'yahoo', start, end)
    
    # Prepare data
    
    scaler = MinMaxScaler(feature_range=(0,1))
    scaled_data = scaler.fit_transform(data['Close'].values.reshape(-1,1))
    
    prediction_days = 60
    x_train, y_train = [], []
    
    for x in range(prediction_days, len(scaled_data)):
        x_train.append(scaled_data[x-prediction_days:x, 0])
        y_train.append(scaled_data[x, 0])
    
    x_train, y_train = np.array(x_train), np.array(y_train)
    x_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1], 1))
    
    # Create Neural Network
    # pip install numpy==1.19.5  # install numpy 1.19.5 if you get an error
    
    model = Sequential()
    
    model.add(LSTM(units=50, return_sequences=True, input_shape=(x_train.shape[1], 1)))
    model.add(Dropout(0.2))
    model.add(LSTM(units=50, return_sequences=True))
    model.add(Dropout(0.2))
    model.add(LSTM(units=50))
    model.add(Dropout(0.2))
    model.add(Dense(units=1))
    
    model.compile(optimizer='adam', loss='mean_squared_error')
    model.fit(x_train, y_train, epochs=25, batch_size=32)
    
    # Testing model
    
    test_start = dt.datetime(2020,1,1)
    test_end = dt.datetime.now()
    
    test_data = web.DataReader(f'{crypto_currency}-{against_currency}', 'yahoo', test_start, test_end)
    actual_prices = test_data['Close'].values
    
    total_dataset = pd.concat((data['Close'], test_data['Close']), axis=0)
    
    model_inputs = total_dataset[len(total_dataset) - len(test_data) - prediction_days:].values
    model_inputs = model_inputs.reshape(-1, 1)
    model_inputs = scaler.fit_transform(model_inputs)
    
    x_test = []
    
    for x in range(prediction_days, len(model_inputs)):
        x_test.append(model_inputs[x-prediction_days:x, 0])
    
    x_test = np.array(x_test)
    x_test = np.reshape(x_test, (x_test.shape[0], x_test.shape[1], 1))
    
    prediction_prices = model.predict(x_test)
    prediction_prices = scaler.inverse_transform(prediction_prices)
    
    plt.plot(actual_prices, color='black', label='Actual Prices')
    plt.plot(prediction_prices, color='green', label='Predicted Prices')
    plt.title(f'{crypto_currency} price prediction')
    plt.xlabel('Time')
    plt.ylabel('Price')
    plt.legend(loc='upper left')
    plt.show()
    click image to zoom!
    図11-1
    図11-1はVSCから[Exploere], [New File]をクリックしてテキストボックスにプログラムのファイル名を入力している画面です。
    click image to zoom!
    図11-2
    図11-2はタスクマネージャーの「パフォーマンス」から「GPU 1」を選択している画面です。 プログラムを実行中にこの画面を見てGPUの利用状況を監視します。
    click image to zoom!
    図11-3
    図11-3はプログラムが作成した仮想通貨(暗号通貨)(Bitcoin)のグラフです。 実価格はYahoo!Financeから取得しています。予測価格はプログラムが予測した価格です。
    click image to zoom!
    図11-4
    図11-4のVSCのTERMINALウィンドウの画面です。プログラムの実行結果が表示されています。 画面にEpoch 25/25のように表示されていますが、Epoch数は「ひとつの訓練データを何回繰り返して学習させるか」の回数のことです。 ここでは25と表示されているので25回繰り返して学習させたことになります。 ちなみに、未来の価格を予測するには以下のようなコードを追加します。
    # Predict Next day
    
    real_data = [model_inputs[len(model_inputs) + 1 - prediction_days:len(model_inputs) + 1, 0]]
    real_data = np.array(real_data)
    real_data = np.reshape(real_data, (real_data.shape[0], real_data.shape[1], 1))
    
    prediction = model.predict(real_data)
    prediction = scaler.inverse_transform(prediction)
    
    print(prediction)