bookmark_borderGoogle日本語入力の予測を非表示にする [Mac]

プレゼンなどで画面共有をしていて、大勢の人に入力予測を見せたくないときなどのために。少し手こずったのでメモ。

手順

1. 入力をGoogle日本語入力に切り替える

「かな」キーなどを押して、日本語入力に切り替えます。これをしていないと次の工程に進めないので注意。

2. 環境設定を開く

メニューバーからGoogle日本語入力の環境設定を開きます。

3. サジェストを無効にする

「サジェスト」のタブを開き、下記のチェックを外します。

  • 入力履歴からのサジェスト自動表示を有効にする
  • システム辞書からのサジェスト自動表示を有効にする

入力履歴を見られたくないだけの場合は「システム辞書からの…」はチェックを入れたままでOKです。

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にしたところ無事動きました。