ポータブルスピーカー

久しぶりの更新。。。

ちょっとしたものを聞くのに、iPhone のスピーカーは貧弱だし、イヤホン、ヘッドホンもかったるく思えることがあるので、ワイヤレスのポータブルスピーカーを物色。

最近、風邪を引いてしまって、家電量販店での試聴ができなかったので、Youtube で、色々検索。

探しているうちに “binaural comparison” というキーワードで探すと、バイノーラル録音(人間の耳の位置にマイクを置いて録音する方法)で、各種のスピーカーをレビューしている動画を多数発見し、iPhone の付属ヘッドフォン (解像度は低いが、特性的にはいいと思う) で色々聞き比べたところ、Bang & Olufsen の Beoplay A2 が良さそうと言うことになった。

Amazon で旧型が安かったので、旧型をゲット。25000円くらい。

ちと高いが、私はドンシャリ音が嫌いなので、大人っぽいバランス良い音で聴かせるタイプがいいし、BGM 目的なので解像度が高すぎて疲れるのもよろしくない、で、Bluetooth 接続なんだけど、出来れば AAC が使えた方が音質がいいし、邪魔にならないデザイン、そして、音量調整が細かく出来ること。という点でこれになった。 ワイヤレススピーカーでありがちなのが、最小ボリュームがすでに大きかったり、刻みが荒くて、丁度いい音量にならなかったりとかがあって、今までも3つくらい買ったが不満があった。今回のこれは、そうした点も良く出来ていて、さすが Bang & Olufsen だなあと。

ちなみに、人生初バング&オルフセン。 正直、くそ高いばかりで音は微妙という印象があったのだが、自分も大人になって、音作りの面ではそれなりにこだわっていることが理解できたし、このサイズに対して、あり得ないような大型ドライバ※を入れてるところなんかは軽く狂気を感じたりして、色眼鏡だったのかな? と今では思う。(それでも、コストパフォーマンスは決していいとは思わないけれど)

※ 3インチフルレンジ x 2,
3/4インチツィーター x 2,
3インチパッシブラジエター x 2,
D級バイアンプ駆動

今回は、セカンドラインの “B&O” (Margaret Howellに対するMHLみたいな)だけど、いつかは “Bang & Olufsen” 欲しいな。。。と思いました。

ゲーム

最近、また PC ゲームをやり始めた。

好きなジャンル的には、ウォーシミュレーションゲームと、車の運転や飛行機の操縦などのシミュレーションが好き。 昔は、シューティングや格ゲーや、RPGもやったけど、シューティングや格ゲーはもう反射神経が追いつかないし、RPGはまとまった時間が取れない。

で、大体1~2時間くらいでひと区切りできるゲームをやっている。

ウォーシミュレーションは、ルールがリアルなターン制のHEXものが好きなのだが、国産のやつはどれも好みじゃない。 ギャル絵とかも嫌い。

陸戦ものだと、少し古いが Steel Panthers: World at War (SPWaW)シリーズの winSPWW2 あたりをやっている。 SPWW2はフリー版で十分だが、製品版も持っていたりする。 思いっきり英語版だが、ネット上の日本語情報も多いので、さして問題ない。 砲撃を受けたりすると兵士の士気がガタ落ちしたり、逃げ出したり(壊走)するので、大戦略なんかよりはよっぽどリアルで面白い。 また、いわゆる戦術級から作戦級のあいだくらいで、戦略要素はないところもいい。 補給の要素が入ってくると、なんだか仕事みたいになってあまり面白くない。 日本人は個人でゲームをやるときでも、変に見栄をはって「俺は戦略をやっているんだ」というキーワードに引っ張られて、面白くもないことばかりするゲームが多い気がする。それとも、小役人みたいなタイプが多いから、ロジスティクスや生産ばっかりやっているのが楽しいんだろうか?

もう少し時間があるときは、海戦ものの War in the Pacific Admirals Edition なんかをやっている。 主に太平洋戦争を扱ったもので、ルールの細かさとスケールの大きさが売り。 ただし、キャンペーンシナリオをやると半年くらいかかる代物なので、珊瑚海のショートシナリオのみ。(2時間くらい) こっちは戦略ものなので、補給とか生産とかも出てくるが、ルーチン輸送の設定とかが豊富にあるので、たまに確認する程度で良かったりする。もっとも、最長で半年分くらいしかプレイしたことがないので、長期でやった場合のことはよくわからない。 ショートシナリオだけでも結構楽しめるので、まあ、満足感は高い。

どちらも、圧倒的に勝利するのは難しいが、少しでもベターな選択が出来ただろうか? ということに面白みを感じられる人にはいい。
(なかなか、大人にならないとこういうのは難しい…)

血なまぐさい戦争ゲームが嫌なときは、フライトシミュレーターで、のんびり空を飛ぶのがいい。

昔は、Microsoft Flight Simulator が好きだったが、今は、X-Plane というのをやっている。

もはや、ゲームと言うよりも、精巧なシミュレーター (戦闘機とかはゲームっぽい要素もあるけど) なので、色々、無線でのナビゲーションとか、操縦に関する色々とかを勉強しないといけないような代物だが、もともと調べたり勉強したりするのは好きなので、それもまた楽しい。

SkyVector というサイトを見ながら、フライトプランを立てるのも楽しい。

時間の空いたときは、ハワイ上空をのんびりフライトしている。

iPhone / iPad 版も無料であるので、興味があれば是非。

 

どれもこれも、クソ面倒くさいゲームばかりなのが、性格出るねw

スクリプト

最近、ディープラーニングを勉強したこともあり、ちょっとしたプログラミングには Python を使うことが多くなった。

古い人間なので、普段は シェルスクリプトと awk を使うことが多かったし、今でも使うけど、Python のライブラリの強力さには魅力を感じている。 Pandas とか Numpy とか Matplotlib とか強力すぎ。

awk は、もう仕様を丸暗記に近いレベルで覚えているので、何も見ずに書けるから早い。 その成立に、敬愛する B.W.Kernighan が関わっているのもいい。 ライブラリとか、言語拡張の類が全く無いので、テキスト処理にしか使えないが。

Perl は chop が便利だったけど、普段使いにはならなかった。

Ruby は日本発なのが良かったし、機能も申し分なかったが、何か馴染めなかった。

Javascript (Node.js) は、たまに使っている。

多少本格的なのを組むことになったら、昔は Java だったけど、今は何になるんだろうな。。。多分組まないけど(笑)

サーバーっぽいのだったら、Node.js かな。

Surface Book の GPU で Deep Learning(続)

以前のネタの続き。

Deep Learning を学ぶにあたって、フロントを Keras 、バックエンドに TensorFlow を使っていたんだけど、Keras はバックエンドに、TensorFlow 以外にも、TheanoMicrosoft の CNTK を使うことが出来ることに気づいた。

Theano は試してみたけど、Windows だと gcc を入れたりとか、数値演算のライブラリのセットアップがかなり面倒な上に、実行時に毎回 g++ だかのビルドが入るので、パフォーマンス的には微妙だった。 CPU使用で、はまると速い感じはしたが、積極的に使いたい感じではなかった。

CNTK は Microsoft 製だが GitHub で公開されていたり、Linux 版があったり、ライセンスがおおむねMITだったりとか、最近頑張ってるなあという印象。

インストールも`pip install whlへのURL` とするだけで簡単だった。

Keras の設定は `C:\Users\ユーザ名\.keras\keras.json` ファイルの


{
    "image_data_format": "channels_last",
    "epsilon": 1e-07,
    "floatx": "float32",
    "backend": "tensorflow"
}

`tensorflow` となっているところを `cntk` に書き換えれば OK。

バックエンドを切り替えるだけなので、Keras 用に書かれた Python のソースは変更する必要は無い。

で、サンプルの実行だが、サンプルにもよるが、全体的に TensorFlow よりも高速に感じられる。 CPUのみだと、逆に遅いケースもあるようだ。

Surface Book での GPU 使用だが、CUDA と CuDNN が入っていれば、何も考えなくても使ってくれる。 使用中の様子は `nvidia-smi.exe -l` で確認できる。

TensorFlow の場合は、多少メモリ効率が悪くて、パフォーマンスが出なくても、なんとか GPU で動かしてくれる感じだったが、CNTK の場合は、テストバッチがメモリに収まりきれないと、簡単にエラーで止まってしまう仕様のように見える。

結果的に、バッチサイズやネットワークの深さの調整が必要になったりするが、GPU を使っているのにパフォーマンスが出ないケースが否が応でも排除されてしまうので、開発の時間効率はかえって良いのではないかと思う。

ということで、CNTK に乗り換えて、結構快適になった。

Raspberry Pi で Deep Learning

Raspberry Pi で Deep Learning 用のライブラリの TensofFlow をインストールする話。

Deep Learning というと、GPU 演算したりとか、もの凄く重い処理というイメージだし、実際重い。

なので、あまり Raspberry Pi 向きの話ではないが、学習済みのデータを読み込んで、予測を走らせたりするくらいならば十分出来る印象。
実際、学習の処理を走らせてみても 4コアの Raspberry Pi 3B ならば、GPU 無しで、ちょっと古めの i7 との性能比で 1/2~1/4 くらいの性能。
遅いといっても、3倍くらいで、10倍とかそういう話ではないので、低電力でのんびり走らせるのであれば、使えなくはない。

大昔 UNIX ワークステーションで、glibc のコンパイルを始めたら、半日かかったとか、そういう時代からすれば、5000円でスーパーコンピューターが買えているようなもので、凄い時代だよなあと。。。(歳バレネタ)

で、インストール手順なのだが、正直、このサイトにバッチリ書いてあるので、あえて、語るほどでもない(笑)

https://github.com/samjabrahams/tensorflow-on-raspberry-pi

しかし、深層学習。 なかなか難しい。正直、中身に関しては、よくわからない。
細かいところは正直、理解できる気がしないので、回帰分析の一種という大雑把なとらえ方で考えている。

でも、色々なアルゴリズムを組み合わせて、階層をつくって、データーを食わせてやると、確かに重みとバイアスの学習が行われて、値が収束していくのが分かる。
この、値の収束の仕方とか、学習結果から予想されるデータをグラフで見たりとかで、感覚に近いかどうか? で判断してみたりしている。
まあ、遊びだからこんな感じでいいのだ。

TensorFlow はそのまま使うと、結構頭を使うというか、解析モデルが分かってないと出来ないので、実際はラッパーライブラリを使っている。
最初は tflearn というのを使っていたが、今は Keras というライブラリを使っている。 Keras の方が全然早いしわかりやすかった。

あー、ネット上でも、こんなにフワフワな深層学習ネタはあまりなさそう(笑)
大体、数式を真面目に読まずにやってるんだから、こんな感じにしか書けない。
偏微分とか、思い出せないよ…
デタラメなニュース記事よりかはマシかなと思っていただければ幸い。

Deep Learning のとっかかりとしては、下の2冊がお勧め。
実際動かす話だと、詳解~の方が早いが、オライリーの方が理論については読みやすい。