bookmark_border[環境構築] TensorFlow+KerasをGPUで動かす[venv]

頻繁にすることではないものの、いざ構築するとなるとやることが多いのでメモ。Pythonの仮想環境はvenvを使います。

1. 構築前の確認事項

グラフィックボードがNVIDIAであること

2022年1月現在、TensorFlowはNVIDIAのGPUドライバだけをサポートしています。

MACなどRadeonのようにNVIDIA以外のGPUの場合は残念ながらTensorFlowを使うことができません。

TensorFlowが求めるGPUドライバ, cuDNN, CUDAのバージョン

TensorFlow公式ページに行き、最新のTensorFlowが求めるcuDNNとCUDAのバージョンを確認します。このバージョンたちにずれがあるとimportに失敗することがあります。

https://www.tensorflow.org/install/source_windows?hl=ja

2. 各種ファイルのダウンロード

CUDA

https://developer.nvidia.com/cuda-toolkit-archive

CUDAはCPUで行う処理をNVIDIAのGPUに行わせる開発環境のことです。TensorFlow公式ページに書いてあったCUDAのバージョンを探し、ダウンロードします。今回の場合11.2系です。

cuDNN(アカウント登録が必要)

https://developer.nvidia.com/rdp/cudnn-archive

登録(ログイン)したらcuDNNのアーカイブページに行き、先ほどTensorFlow公式ページで確認したバージョンのcuDNNをダウンロードします。今回の場合8.1です。

グラボのドライバ(should)

CUDAとcuDNNは大抵バージョンが上がるごとに新しいGPUドライバを求めてくるため、この機会に最新のドライバを入れても良いでしょう。

3. CUDAとcuDNNのインストール

CUDA

インストーラーのため、実行したら画面の指示に従うだけでOKです。

cuDNN

ダウンロードしたzipファイルを展開するとbinなどのフォルダが3つほどあります。

CUDAをインストールしたことによってできた下記のフォルダにそのcudaフォルダの中身を全部移動します。(フォルダとは別にSLAのtxtファイルもありますが、公的文書のため覚書として今回一緒にコピーします)

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2
※↑末尾のバージョン番号はインストールしたCUDAのバージョンによって異なります。

4. Pythonのライブラリのインストール

Pythonがインストールされており、パスが通っていること前提です。

pip venv

まずはvenvで仮想環境を作ります。

cd 好きなディレクトリ
python -m venv venv

仮想環境を作ったらactivateしておきます。

venv¥Scripts¥activate

pip install

必要なら tensorflow-gpu=2.6.0 のようにバージョンを指定してください。

pip install tensorflow==2.6.0 keras==2.6.0

バージョン1.15以前はパッケージがtensorflowとtensorflow-gpuに分かれていましたが、それ以降はtensorflowに統一されています。

TensorFlowがGPUを認識できているか確認する

pythonコマンドで対話モードを起動し、下記のように実行します。

参考:https://www.tensorflow.org/guide/gpu?hl=ja

import tensorflow as tf
print("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU')))

このように1以上の値が出力されていれば認識されています。

Num GPUs Available: 1

下記のコードでも確認できます。

from tensorflow.python.client import device_lib
device_lib.list_local_devices()

いくらか情報が出力され、その中にGPUの名前が出てきていればうまくいっています。

...
physical_device_desc: "device: 0, name: NVIDIA GeForce GTX 1080 Ti, pci bus id: 0000:01:00.0, compute capability: 6.1"

bookmark_border[Windows] javaコマンドが使えないときはこうする

コマンドプロンプトでjavaコマンドが使えないときのメモです。この記事の情報はすべて自己責任でご覧ください。

手順

1. Javaがインストールできているか確認する

スタートメニューで検索窓に「Java」と入れ、「Javaについて」や「Javaの構成」という選択肢が出てきたらインストールはできています。この記事の 3 に進んでください。

新しいJavaのバージョンをこの機会にインストールしたい場合は 2 に進むこともできます。

2. Javaをダウンロード, インストールする

Javaは複数の会社や組織が指針となる規格にそって開発、公開しているアプリケーションです。それで一口にJavaをダウンロードすると言ってもユーザーにはいくつか選択肢があります。

Javaを開発している代表的な会社はOracleです。もし他の会社や組織が公開するJavaが良いという場合はそれを使うこともできます。

OracleのURLはこちらです。どのJavaを使うにしてもライセンスは確認しましょう。

https://www.java.com/ja/download/ie_manual.jsp

Javaとはなにか

広義にはアプリケーションの名前です。世界中のコンピュータで極めて広く使われており、様々なアプリケーションを動かす基盤になる存在です。狭義にはプログラミング言語のことを指すこともあります。

3. javaコマンドが使えるか確認する

この時点でjavaコマンドが使えるようになっている可能性があります。

  1. コマンドプロンプトを起動する (スタートメニューで cmd と入力すると候補に出てくる)
  2. コマンドプロンプトで java と打ってEnter

このとき、次のどちらの結果になるか確認します。

  • たくさんの行がぶわっと出力される → 成功
  • 'java' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。 → コマンドプロンプトを終了し4へ

4. パスを通す

java というコマンドを実行したとき、どのプログラムを呼び出したら良いのかPCに教えてあげる操作をします。一度行えば基本的にずっと有効です。

スタートメニューで「環境変数」と入力し、そのままEnterします。

「環境変数」をクリックします。

上の白い枠の中にある「Path」を選択し、「編集」ボタンを押します。

※使っているPCに複数ユーザーアカウントがあり、他のユーザーもjavaコマンドを使いたいなら下の白い枠の中にある 「Path」を選択し、「編集」ボタンを押します。

「新規」を押します。

Javaのインストーラを実行すると大抵 C:\Program Files (x86) にフォルダが作られ、java.exeというアプリケーションがその中のどこかにインストールされます。

「新規」ボタンを押してこの画面の最終行に文字を入力できるようになったら 先程のインストールの工程でできたjava.exeが格納されているディレクトリのパスを指定します。

OracleのJavaをインストールした場合は C:\Program Files (x86)\Common Files\Oracle\Java\javapath に入っているかと思います。念の為そのフォルダをエクスプローラーで開き、java.exe というファイルがあるか確認しておきましょう。

入力できたら「OK」で終了します。ここまでで開いた画面はすべて閉じてOKです。

5. javaコマンドが使えるかもう一度確認する

コマンドプロンプトを開いているなら一度閉じてから再度起動します。

java と打って、文字がたくさんでてきたらうまくいっています。もし表示されない場合はパスの指定が間違っているかもしれません。

カテゴリー: Java

bookmark_border[SpreadSheet] SPARKLINE関数 コピペ集

セル内にミニグラフを表示できるSPARKLINE関数、時々使うものの頻繁にではないため都度検索し直していることに気づきメモ。個人的によく使うものが中心です。

横棒グラフ

最小値0, 最大値100の横棒グラフ

=SPARKLINE(A1,{"charttype","bar"; "min",0; "max",100})

↑のグラフの色を変える

=SPARKLINE(A1,{"charttype","bar"; "max",100; "min",0; "color1", "#33AADD"})
↓同じ意味
=SPARKLINE(A1,{"charttype","bar"; "max",100; "min",0; "color1", "#3AD"})

color1 という属性を追加し、カンマで区切ってRGBで色を指定する。

colorではなくcolor1 とするのが罠。積み上げグラフとして表示する場合は2色目を color2 で指定する。

折れ線グラフ

最小値0, 最大値100の折れ線グラフ

=SPARKLINE(A1:C1,{"charttype","line"; "ymin",0; "ymax",100})

棒グラフと異なり、最小, 最大値は ymin , ymax で指定します。

↑のグラフの色を変える

=SPARKLINE(A1:C1,{"charttype","line"; "ymin",0; "ymax",100; "color", "#4E2"})

color で色を変えます。棒グラフと異なり color1color2 ではないことに注意。

↑のグラフの太さを変える

=SPARKLINE(A1:C1,{"charttype","line"; "ymin",0; "ymax",100; "color", "#4E2"; "linewidth", 3})

linewidth に数値を指定する。少数もOK。

bookmark_border[Keras] Cannot register 2 metrics with the same name で落ちる

Keras(2.7.0) + TensorFlow(2.6.0) を久しぶりに触ったらimportでAlreadyExistsError: Another metric with the same name already exists. と言われ落ちたのでメモ。

E tensorflow/core/lib/monitoring/collection_registry.cc:77] Cannot register 2 metrics with the same name: /tensorflow/api/keras/optimizers
...
...
tensorflow.python.framework.errors_impl.AlreadyExistsError: Another metric with the same name already exists.

TL;DR

TensorFlow2.6 なら Keras2.6 を使うこと。

pip uninstall keras
pip install keras==2.6.0

理由

Keras2.6 + TensorFlow2.7 はバージョンミスマッチのためNG。

KerasのGitHubのIssueを見ると次のような記述あり。

We believe the Keras 2.7.0 release is getting installed by pip when users install Tensorflow, even though Tensorflow 2.7 hasn’t been released to pip yet. The version mismatch (Keras 2.7 + TF 2.6.1) is probably the cause of the error.

(TensorFlow2.7.0はpipで未リリースなのに、pipでTensorFlowをインストールするときKeras2.7.0がインストールされてしまっていると考えられます。エラーはKeras2.7+TensorFlow2.6.1とバージョンが揃っていないことが原因でしょう。)

Another metric with the same name already exists in Keras 2.7.0 #1557

まさに自分のことです。(pip list したら Keras2.7.0+TensorFlow2.6.1 になっていた)

一旦Kerasを2.6.0にしたところ無事動きました。

bookmark_border[手術ブログ] 鼻中隔矯正術を日帰りで受けてきた | 10日~ 6ヶ月目

前のレポはこちら

←←← 3ヶ月前~前日 ← 当日 ←翌日~9日目


今回受けた手術

  • 鼻中隔矯正術 – 鼻の真ん中にある軟骨を切除する
  • 下鼻甲介粘膜切除術 – 鼻の中で特に腫れる粘膜を減量する
  • 後鼻神経切断術 – くしゃみ/鼻水を司る神経を切断し、それを発動しにくくする
  • 日帰り, 局所麻酔です。


    術後10日目

    いよいよ鼻の中に入っていたプレートを取ってもらいます。

    プレートは鼻の中で糸で縫って固定されており、先生が切ったあと抜き取ってくれます。その時痛みは特にありませんでした。

    プレートは結構大きく、ゆで卵を真ん中で割ったときの断面くらいだったかと思います。

    メロセルを取ったときとは違い、出血はありませんでした。

    感じなかった匂いが

    病院を出ると早速鼻の通りを感じます。

    自分の横を車が通ると、それまで感じなかった排気の匂いを感じられるようになりました。世の中にはこんなに匂いがあったのかと感動します。

    術後3週間後

    経過を観察するため最後の診察です。特に問題はなく、手術していただいた病院での診察は終了。これからは地元の耳鼻科で引き続き診ていただきます。

    アレルギーがなくなったわけではないので、地元の耳鼻科の先生にステロイド系の点鼻薬と抗アレルギー薬をもらう生活に戻ります。これを怠るとアレルギーが悪化し、鼻詰まりがまた訪れてしまう可能性があるようです。

    とはいえいままでずっと月1程度で薬を貰いに診察に行っていたので特に苦ではありません。

    術後1ヶ月後

    術後初めて地元の耳鼻科の先生に診てもらいます。鼻の中に内視鏡を入れたとき「すごい奥まで見えるようになりましたね!!」とおっしゃってました。

    血管収縮系の点鼻薬は不要になった関係でいままでより多めに薬をまとめて出していただけるようになり、だいたい2ヶ月に1回くらい診察に行くだけでOKになりました。

    術後6ヶ月後

    この記事を書いている時点で手術から半年以上が経ちました。鼻詰まりの程度や副鼻腔炎を持っているかなどによって術後の経過はそれぞれのようですが、私は手術受けて良かったです。

    すごい効力

    アレルギー検査をすると自分は一年中何かしらに反応しているようです。春と秋は特にひどかったです。この手術はアレルギーそのものを治すものではなく また手術後に経験した季節はまだ秋だけなものの、完全に鼻が詰まったという事は今の所ありません。

    ホコリをたくさん吸ってしまい通りが悪くなることは数回ありましたが、それでも完全に詰まるということはありません。またかつてはお酒を飲むとすぐ鼻が詰まっていましたがそれもなくなりました。


    このシリーズはこれで完結としたいと思います。

    かつて一日4回は血管収縮系の点鼻薬を使わないと生きて行けず、寝る前に点鼻薬しても26時くらいには鼻が詰まってひどい思いをしていました。でも手術後から今日に至るまで血管収縮系の点鼻薬は一度も使っていません。今はそれを使わなくても快適に鼻だけで呼吸ができます。

    手術していただいた先生には感謝しかありません。

    個人のレポですので、本サイトの情報をご活用いただける場合は自己責任にて。

    bookmark_border[暫定対処] Minecraftが起動できない – 0x80131509, 0x80131509エラー

    ※このサイトの情報は自己責任でご活用ください。

    Java版Minecraftのランチャーが 0x803F8001 や 0x80131509 といったエラーで起動しない現象が報告されています。

    公式のフォーラムにもこの現象は報告されており、バグであれば近く修正されると思われます。

    急いでいる方向け

    Windows7,8版ランチャーをインストールすると動くと海外でいくつか報告されています。

    https://www.minecraft.net/en-us/download

    DOWNLOAD FOR WINDOWS 7/8 を選択し、インストールします。

    修正やその他の回避方法が公式から示されるまでの暫定対処です。

    bookmark_border[暫定対処] iTunesがiTunes cannot run because some of… で起動しない件

    iTunesを起動しようとしたら iTunes cannot run because some of its required files are missing と言われ起動できなかったので暫定的な対処。

    インストールしているiTunesを一回アンインストールしたり、古いバージョンをインストールする作業が伴います。この情報は自己責任でご活用ください。

    1. バックアップを取る

    一度iTunesのアンインストールを伴いますので念のためバックアップを取っておきましょう。私はバックアップからの復元は特に必要ありませんでしたが念のためです。

    2. iTunesを一旦アンインストールする

    アプリと機能 からアンインストールします。

    3. 古いバージョンをダウンロードする

    問題が起こっているのはバージョン12.12 のようです。公式がその前のバージョン 12.10.11 を配布していますのでダウンロードしておきます。

    iTunes 12.10.11 for Windows (Windows 64 bit) (apple.com)

    4. インストール

    古いインストーラを起動してインストールします。

    5. 起動,直近の安定版12.11.4にアップデートする

    インストールした12.10.11は少し前のバージョンです。直近の安定板と思われる12.11.4 にアップデートします。

    起動すると 12.11.4 にアップデートするか尋ねてくるのでアップデートします(問題が起こっているのは12.12)。未確認ですが12.12より前の直近の安定板と思われます。

    12.12がアップデート項目に上がってこないということは、Appleも問題を認識していて配布を一旦止めているのかもしれません。

    言うまでもなく、12.12で対処されているであろう不具合に未対応のバージョンであることに注意は必要です。今Appleが頑張って対処してくれているはずなので、最新版の配布をしばらく待つことになりそうです。

    bookmark_borderMinecraft Forgeのインストーラが開けないときはこうする

    Forgeのインストーラである.jarファイルがダブルクリックで開けないときの対処です。

    ※バージョン1.20でも同様の手順です。(2023/12/20時点)

    コマンドプロンプトで開く

    .jarファイルはJavaという言語で書かれたプログラムを1つにまとめたものです。コマンドプロンプトからjavaコマンドで実行できます。

    この記事ではJavaがPCにインストールされていること前提で進めます。

    1. コマンドプロンプトを起動する

    Windowsキー + Rcmd と打って OK を押します。

    2. javaコマンドでforgeの.jarファイルを指定し、実行する

    java -jar まで打ったら、コマンドプロンプトにforgeのインストーラをドラッグ&ドロップします。(javaの後ろと-jarの後ろには半角スペースを1つずつ入れます)

    つまり、 java -jar Forgeのインストーラのパス のように入力できていればOKです。

    Enterで実行します。

    ここでエラーになる場合

    Javaがインストールできていないか、それをコマンドプロンプトから使う設定ができていません。こちらの記事を参考にできます。

    3. インストール

    インストーラが立ち上がるので、画面を操作してインストールします。インストールが終わるまでコマンドプロンプトは閉じないようにします。

    インストール中いろんな文字がコマンドプロンプト上に出るかと思いますが気にせず終わるのを待ちます。

    終わってforgeのインストーラのOKボタンを押して再びコマンドが打てる状態に戻ったらコマンドプロンプトも閉じてOKです。


    [広告] Minecraft Java版でForgeも動かせるマルチプレイのサーバーを用意するには、Xserverがおすすめです。

    2023/12/21現在、1.20.2 [Forge]にも対応しており、Modを使ったマルチプレイを構築したい方に適したプランがあります。

    処理性能No.1!快適なゲーム環境なら「Xserver for Game」

    下記のバージョンのForgeから選ぶことができ、最新バージョンのForgeに対応していないModを使いたい方にも向いています。

    Xserver for Gameで提供しているMinecraft Forgeイメージのバージョン

    • 1.20.2
    • 1.20.1
    • 1.20
    • 1.19.4
    • 1.19.3
    • 1.19.2
    • 1.19.1
    • 1.19
    • 1.18.2
    • 1.18.1
    • 1.18
    • 1.17.1
    • 1.16.5
    • 1.16.4
    • 1.16.3
    • 1.16.2
    • 1.16.1
    • 1.12.2

    処理性能No.1!快適なゲーム環境なら「Xserver for Game」




    カテゴリー: Java

    bookmark_border[解説] Amazon Prime Videoが”VPNまたはプロキシのエラー”で見れない

    ※このサイトの情報は自己責任で参照, 参考になさってください。この記事の内容は予想で、内容に確証はありません。

    Amazonプライムを見ようとしたら昨日まで見れていたのに見れなくなりました。ネットワークの設定は一切触っていないのになぜという感じです。

    VPNもプロキシも使っていないのに「お使いのデバイスは、VPNまたはプロキシサービスを使用してインターネットに接続されています。VPNまたはプロキシサービスを無効にしてもう一度お試しください。」と表示されて動画が見れない事象が発生しました。回線はケーブルテレビです。

    別宅の光回線に接続すると見られるようになるという状況です。


    急いでいる方向け

    AmazonにVPNやプロキシを使っていると誤解されている可能性があります。 そしてその誤解を解く方法は一般のインターネットユーザーができることではあまりないため、残念ながら思いの外八方塞がりな状況と思われます。

    ケーブルテレビ(CATV)でインターネットを契約している方はこのエラーに出会う可能性が高いと考えられます。

    ※2022/01/15追記 1ヶ月ほど経った頃、急に見れるようになりました。Amazonが誤解と判断してくれたか、IPアドレスが変わった(後述)のかは不明です。

    自分のIPアドレスが変われば改善する可能性がある

    (Amazonから見た)自分のIPアドレスが変われば見られるようになる可能性大です。そのためには下記のことにトライできます。

    • プロバイダに問い合わせる
    • 光回線やモバイルWi-Fiなど、通信手段を別事業者に変える
    • ルーターとモデムを再起動する (希望薄い)
    • IPアドレスが変わるのを待つ (希望薄い。それがいつなのかは不透明で、そもそも変わらないかもしれない)

    ルーターとモデムを再起動する

    自分でできる一番手っ取り早い方法です。これらの機械が再起動するとき、機械は自分の住所にあたるIPアドレスをもう一度取得しようとします。そのときに今までと違うIPアドレスを手に入れることができれば動画を見られるようになると思われます。

    しかし自分がプロバイダのネットワークに入っていて、プロバイダからプライベートIPアドレスをもらう形だとこれは上手くいかない可能性があります。(後述)

    IPアドレスが変わるのを待つ

    割り当てられたIPアドレスには大抵リースタイムという有効期限が定められており、期限が切れるともう一度IPアドレスを割り当ててもらおうとします。そのときにIPアドレスが変わることが期待できます。

    これも自分がプロバイダのネットワークに入っているときは上手くいかないかもしれません。

    プロバイダに問い合わせる

    IPアドレスを変えてもらうよう問い合わせるのも一つの手です。(後述)


    なぜ

    ※ここから先ある程度技術的な話が続きます。

    AmazonにVPNやプロキシを使っていると誤解されている可能性があります。

    Amazon公式のフォーラムを見ると同じような問題に遭っている方がいることがわかりました。

    公式からのこのような返答が記録されています。

    ルーターの再起動で異なるIPアドレスが割り当てられることで改善する可能性がございますので、再起動をお試しください。

    https://jp.amazonforum.com/s/question/0D54P00007Knlza/

    AmazonがVPNやプロキシを無効にするよう求めるのはなぜ?

    ビデオオンデマンドサービスは権利などの関係で「このコンテンツはこの国限定で配信したい」などの事情があり、その視聴者がどの国の人なのかの判断はIPアドレスという住所に相当する情報が使われます。

    ここで仮に自分がVPNを使って別の国のコンピュータ(ネットワーク)を経由してAmazonに接続したとします。すると、Amazonにとってはあたかもユーザーが他の国からアクセスしているかのように見えます。

    プロキシはVPNと本来の役割や目的は異なりますが、コンピュータ同士の通信の間に入るコンピュータです。プロキシはAmazonからはVPNと同じように見えます。

    VPNもプロキシも使っていないのにそう誤解されるのはなぜ?

    ケーブルテレビ(CATV)のように専用線があり プロバイダのネットワーク内からインターネットに出る形だと、通信相手(Amazon)にとってはVPNを介しているかのように見える可能性があります。

    Amazonはどのように通信相手がVPNなのかを判定しているのか

    同じIPアドレスから複数のアカウントの接続があった場合、そのアドレスはVPNだと判断しているのかもしれません。

    自分が専用線で結ばれたネットワーク内にいる場合、Amazonから自分はそのネットワークのアドレスからのアクセスに見えます。

    つまり専用線の中にいる(≒同じプロバイダを契約している)複数の人がAmazonプライムに接続すると、VPNやプロキシを介していなくてもAmazonにとっては複数のアカウントが1つのネットワークからアクセスされているように見えます。(VPNのように見える)

    プロバイダに問い合わせるという方法

    プロバイダが自分をネットに直接触れる場所に置いてくれる(グローバルIPアドレスを貸してくれる)サービスを持っているなら、それに申し込むことで問題なく見れるようになるかもしれません。

    しかしそれは自分をネットに直接自分をさらすことになるため、攻撃の通信が増えることは避けられないと考えて良いでしょう。グローバルIPアドレスをもらう設定への変更はそれを覚悟の上で行う必要があります。

    プロバイダのネットワーク内にいながらネットワークのアドレスを変えてもらうことができればベストかもしれませんが、プロバイダがそのようにネットワークを分けるメリットはそれほど考えられないのでほぼ不可能ではないかと思われます。


    結論

    誰も悪くないですが結果として見れないという状況で、思いの外八方塞がりです。待っていれば状況が改善する可能性もありますがその保証はありません。

    テザリングやモバイル回線で全く別の回線でインターネットに出るか、光回線など別のかたちでネットに接続するようにすると解決する可能性があります。

    bookmark_border[APN] Oppo端末でモバイルデータ通信だけできなくて手こずった話

    OPPO A73を購入してSIMカードを差し替え、APN設定をしてもモバイルデータ通信だけできずそこそこの時間を潰したのでメモです。

    通信事業者は楽天モバイル(docomo)。電話はでき、Wifiももちろん接続できる。でもモバイルデータ通信だけができない。

    結論

    APN設定で認証タイプをCHAPにし、再起動する。

    楽天モバイルにおいて認証タイプは「PAPまたはCHAP」となっているものの、CHAPを明示的に選択します。

    するとプリインストールされているAPN接続候補たちがすべて画面上から消え、自分が設定したAPN設定が1つだけがAPNの接続先候補として表示されました(なぜスクリーンショット撮っていなかったのか…)。そして無事に接続されました。