「三体」劉 慈欣 (著)を読みました

三体

三体

中国のSFがヒューゴー賞を取ったと話題になった本です。
かなり前から話題になっていたこともあり、早々に購入をして積読していました。
1回目に少し読んだところで、1週間空いてしまい物語の展開が追えなくなったので、もう一度初めから読みなおしました。
自分が理論物理を研究していたこともあり、科学的背景は割とすんなり理解できたのですが同時にそれはないだろと突っ込みたくもありましたが、エンタテインメントとして物理屋さんなら楽しめると思います。
また、著者が中国人ということもあり、人民解放軍や同士という言葉が出てきて、そこには中国の文化と言うか社会的な背景がふんだんに織り込まれていますが、小説として読めば違和感はありません。
三体世界の描写もいかにも中国と言う感じはありますし、進んだ科学技術+独裁というのもいかにも前近代的なにおいがしますが、1周回ってそれが現実になるかもと言う最近の世界を考えると逆にリアルだなとも感じました。
科学が進歩するには基礎科学を推進することが重要で、加速器のを建設して物質や時空の謎、宇宙の基本法則を解明することが必要ときちんと言い切っていることろは、まさにその通りと思います。
デジタル化がどうのこうの、ディープラーニングとかデータサイエンスがとか言っている間に、基礎科学が停滞してしまっている日本を見ていると、三体世界が中国で、日本が地球なのではないか、などと妄想してしまいました。
実は、基礎科学を停滞させるために他に投資や関心を向けさせる巧妙な罠が仕掛けられているなんてことはないですよね。
土日を使い集中的に一気に読んでしまいましたが、もう終わりなのか、もっと物語の世界に浸り続けたいと思うほど読みやすかったです。
特に最後の方は一気にいろんな謎が解けるとともに、さらなる謎も投げかけられこれは三体Ⅱも読まざるを得なくなりそうです。

Pytorch学習の効率化

pytorchで学習をさせているときに、GPUを使っているのにGPUのロードが全く上がらないことがよくあります。
おそらくDataLoaderでのデータのロードとデータの処理に時間がかかって、GPUの計算がずっと止まっている状態なのだと思います。
以下のようなとても役に立つ記述がありましたので、メモとしてリンクしておきます。
正確には測ってはいませんが、いくつか使ってみたら確かに少し早くなりました。
qiita.com

ECCV2020リンク集

論文リンク
https://www.ecva.net/papers.php

150+ Pre-recorded ECCV 2020 Paper Presentations - All shared by authors with free public access
crossminds.ai

ECCV 2020 Paper Compilation - TUM Visual Computing Lab & Collaborators
www.youtube.com

Tensorflow, Kerasでよく使うセーブデータ形式

HDF5

多分一番よくつかわれるデータ形式だと思います。
非営利のHDF5グループが管理しているデータ形式
階層バイナリ形式で非常に大規模なデータの保存にも対応できる。 ディープラーニングではモデルそのものやモデルの重みを保存するのに使用されています。
モデルのみを保存できますし、モデルと重みの両方を一度にセーブすることもできる。

#モデルのみセーブする
model.save("hoge-model.hdf5")
#モデルと重みの両方をセーブ
model.save("hoge-modelWeights.hdf5")
#モデルをロードする
myModel = keras.models.load_model("hoge-model.hdf5")
#重みをロード
myWeight= keras.model.load_weights("hoge-modelWeights.hdf5")

JSON

JSONはどちらかと言うとWEB界隈でよく使われているデータ形式で別にTF,Kerasだからというわけではないですが、binary形式の
HDF5形式に対しで後でテキストとして読みやすいのでたまに使うことがあります。 ただし、保存できるのはネットワークモデルのみです。

# モデルの保存
model_json = model.to_json()
with open("hoge/hoge-model.json","w") as js:
     js.write(model_json)
# モデルの読み込み
js = open("hoge/hoeg-model.json", "r")
model_json = js.read()

Pickle

PickleはPythonのリストなどをセーブするのにつかわれます。
TF, kerasでは学習の履歴をセーブするのによく使われます。

# historyのセーブ
history = model.fit( )
with open('hoge.pkl', 'wb') as hf:
     pickle.dump(history.history, hf)
# historyのロード
hf = open('hoge.pkl', 'rb')
history = pickle.load(hf)

HPG 2020 - High-Performance Graphicsの発表動画リンク集

公式ページに発表動画へのリンクあり
www.highperformancegraphics.org

Youtubeにもあがっています。
www.youtube.com
www.youtube.com

Pytorch, TensorflowのGPU版とOpneCV環境の構築方法

2020年7月10日時点での情報です。
Pytorch v1.5.1, Tensorflow v2.1.0のGPU版とOpneCV環境の構築方法

GPU: RTX2060Super
OS: Windows10Pro 64bit

Python3.7 Anaconda
CUDA10.2
OpenCV 4.2

CUDAとcuDNNのインストール

まずは、CUDA10.2をインストールします。
正しくインストールできたかどうかはコマンドプロンプト
>nvcc -V
で確認する。
cuDNNをインストールする。cuDNNはTensorflowで要求されるので、必要なバージョンを確認してインストール。
今回は、cuDNN v7.6.5 for CUDA 10.2 を選択。
ダウンロードしたcuDNNパッケージを解凍し、インストールガイドに従って3つのファイルをコピーする。

pytorch 1.5.1のインストール

(1) まずはanaconda 仮想環境を作成する。
"pytorch15GPUCV"という名前で作成。pythonのバージョンは3.7を選択します。
ついでにjupyter notebookもインストールしておきます。

(2) pytorchのページに行くと、バージョン等を選択すると必要なインストールコマンドが表示されるので、
指示通りにインストールする。

(3) OpneCV4のインストール
以下のサイトを参考にしました。
https://qiita.com/mml/items/fb9f6e66746be351fbc3
>pip install opencv-python
>pip install opencv-contrib-python

(4) 他のパッケージのインストール
>conda install matplotlib

tensorflow 2.1.0のインストール

tensorflow公式ページのインストール>GPUサポートを見るとCUDA10.1と書いてありますが、今回はCUDA10.2でtensorflowの環境を構築しています。
CUDA10.2で動作はしているのでまあ大丈夫なのでしょう。

(1) まずはanaconda 仮想環境を作成する。
"tensorflow210CV"という名前で作成。pythonのバージョンは3.7を選択します。
ついでにjupyter notebookもインストールしておきます。

(2) tensorflowのインストール
> pip install tensorflow
とやると自分の環境ではtensorflowがGPU版を認識してくれない。
以下のページを参考にして、
https://medium.com/lsc-psd/tensorflow2-1%E3%81%A7cuda10-1%E3%81%AA%E3%81%AE%E3%81%ABgpu%E3%81%8C%E8%AA%8D%E8%AD%98%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84%E5%95%8F%E9%A1%8C%E3%81%AE%E8%A7%A3%E6%B1%BA%E6%B3%95-6be5137ec216

以下のコマンドでインストールしました。
> conda install tensorflow=2.1.0=gpu_py37h7db9008_0

(参考)2020/7/10現在でpython3.7+GPUで一番新しいものは、
https://repo.anaconda.com/pkgs/main/win-64
を見ると
tensorflow-2.1.0-gpu_py37h7db9008_0.tar.bz2
のようだ。

あとはpytorchの時と同様にopenCVとその他のパッケージをインストールします。

(3) OpneCV4のインストール
以下のサイトを参考にしました。
https://qiita.com/mml/items/fb9f6e66746be351fbc3
>pip install opencv-python
>pip install opencv-contrib-python

(4) 他のパッケージのインストール
>conda install matplotlib

インストールの確認

インストールを確認するための簡単なコードを作成し、pytorch, tensorflowでGPUが認識されていて、OpenCVが動作することも確認しました。