カテゴリー「パソコン・インターネット」の159件の記事

2017年6月29日 (木)

Nokia 3買ったのでSamsung A3と比較。

使っているSamsung A3 (2016年版)がまだ動くんだけど落っことして画面にヒビがはいっているので、謀ヨーロッパでは発売になったばかりのNokia 3に買い替えた。日本でももうすぐ発売だそうです。

定価はA3が200ユーロで160ユーロのNokia3の方が安いが、A3は安売りしていたのでどちらも16000円くらいで入手したので比較してみる。このくらい安いと落として画面を割ったときの修理代くらいなのでよく落とす私にはちょうどいい。

A3と比べるとDual Simカードである点は、確実に勝っているが、あとはスペック的には似たような感じ。

Nokia3の方が1 cmくらい背が高く、横幅も数ミリ広い。大きいぶん、発熱や価格を抑えられて、CPUスペック的にも有利になるのではと思ったんだけど、実際はA3の方がCPUの性能が良いようで、ぴよ将棋のベンチマークをすると

A3 112 (4コア設定)
Nokia 3 98 (4コア設定)

ということで、Nokia3が負けてます。A3の発売は2015年12月ということで、部品の調達面でNokia3の方がかなり有利ではないかと思って買ったので残念。はやり良い部品はシェアが桁違いのSamsungが大量に安く買い付けてしまうのでしょうか。一年半たっても改善しないとは驚きです。

比較サイトでよく調べると Quad-core 1.5 GHz Cortex-A53とQuad-core 1.4 GHz Cortex-A53ということで、同じチップで、周波数がそのまま差にでたようです。

内部メモリ(RAM)に関しては1.5 GB と 2 GB でNokia3が勝っている。 バッテリーは2300 mAh と 2630 mAh でNokia3の勝ち。 ジャイロはNokia3は搭載。A3はなしでNokia3の勝ち。

ジャイロがあるとなにがいいのかと思うかもしれませんが、携帯をVRビュアーとして使うにはジャイロが必須です。まあ普通の人にはポケGoでVRモードが使えるくらいしかメリットはないかも。

CPUの他、メインカメラも13MPと8MPでNokiaの負け。ただNokia3は自動焦点タイプのフロントカメラらしい。A3のフロントカメラは5Mでオートフォーカスなし。SkypeとかWhatsappにはいいのかも。

実際に使った感じは、手に持った質感とか悪くないし、見た目も普通でスマートで割り好き。OSはAndroid 7で、結構いい感じ。一番気に入った点は、プリインアプリが皆無なこと。Nokiaはマイクロソフト傘下になったので絶対にOfficeをバンドルしてくると覚悟していたが、全くなし。A3はマイクロソフトの要らないアプリが多数、他にもFacebookとかSamsungのソフトがてんこ盛りで全部アンインストール不可能。ディスク容量とられるし、アップデートが頻繁に入ってアンインストールくらいさせてくれと激おこだったので非常に感動した。

しかし、最大の問題はもっさり感。A3(2016年)に比べても明らかにもっさり感がある。CPUの差なら8%以下のはずだけど、明らかにそれ以上の差を感じる。RAMは勝っているのでGPUとチップセットの差か。もしくはA3はAndroid 6.0.1なので、Android 7とドライバーのチューニングがまだ甘いのだろうか?(追記。CyanogeneのAndroid 7が走っているNexus7 (2013)が割りと快適なので、Android 7のせいではなさそう。GPUとチップセットの差ですね。)

A3の2017は330ユーロになる割にスペックがあまり変わっていないので、2016の残り在庫を見つけて買うと半額程度の160ユーロで買える。

結論。 Nokia3はもっさりで辛い。まあ全体的にはA3の方がいいです。子供用とかなら安くていいです。ポケGoはあそべますが、重いです。ジムに行くとよく落ちます。

2016年10月 5日 (水)

VirtualBox上のSAS University EditionサーバーにLAN経由でアクセス

昨日書いた記事で、SAS University EditionがサポートしているJupyter notebookサーバーをlocalhostからアクセスしてみました。

どうせなら、デスクトップでサーバーを走らせておいて、LAN経由でノートパソコンでアクセスできたらいいなぁとおもいやってみました。

試行錯誤しましたが、ブリッジモードにして、ポートフォワーディングをしてやればOKのようです。

Sas_bridge

ウィンドウズでVirtualBox Host-Only NetworkとPCの接続アダプター(Local Area ConnectionかWifi)を両方選択して、右クリックすると「ブリッジモードに追加」できます。ブリッジモードにするとNetwork Bridgeのアダプター用に新しいIPが振り分けられるので注意。

その後、

Sas_over_lan

ipconfigでLANのIPv4アドレスをしらべて、VirtualBoxのネットワークアダプター1をNATにしてポートフォワーディングをしてやります。

ぐぐるとHost-only adapterをつかえだの、Bridged adapterをつかえだのばかりあるのですが、私の場合NATで大丈夫でした。NATでもポートフォワーディングするまでだめだったし、ウィンドウズの方で設定したブリッジも外すとダメなので両方とも大事のようです。

同様にSAS Studioも10080をポートフォワーディングしてできるはずですね。

2016年10月 4日 (火)

SAS University EditionでJupyter Notebookしてみる。

昔は大学の研究室でも大金をはたかないと使えなかったSASが、今はSAS University Editionがあって、個人用なら基本部分はタダで使える時代になりました。RとかPythonとかがあるので、時代の流れですね。基本部分しかないのでオラクルとかのdbを直接アクセスとかはできませんが、データがcsvに変換できるならなんでも取ってこれるので、まあ結構使えます。

オフィシャルのアナウンスによると、SAS University Editionは2016年の7月以降のバージョンからはJupyter notebookがついてくるらしいですね。

普通は http://localhost:10080 としてSAS Studioに行きますが、jupyterのサーバーがポート8888を使っているので http://localhost:8888 でアクセスできるはずなんですが、ウィンドウズのVirtualBox上でSAS University Editionのサーバーを走らせるとなんかダメだった。

VirtualBoxのNATのネットワークドライバーのSettingを確認してみるとポートフォワーディングにHTTPとHTTPSしかないのが原因っぽいので追加してみる。

Sasunivnat

Sasportforwarding

一応自分でJupyterのサーバーを使ってPythonでなんかする可能性を考えると18888を8888へ送った方が良いかなと思ったのでそうしてみた。

Sasonjupyter

動いた!

別に特別なことはせずとも、SAS University Editionのサーバーが走っていればJupyterのサーバーもすでに走っているようだ。でもつかってみるとSASってログが冗長だしJupyterにはあんまり向いていない気がする。optionsでログ簡潔にすればいいのかな。

options nosource nonotes;

2016年8月20日 (土)

Xperia Z ポケモンGOにログインできない。対処法

私は初代のXperia ZでポケモンGOをがんばっているのですが、40分から最長でも2時間程度ゲームをすると画面がフリーズして、なにもできない状態になります。

アプリの切り替え画面にいってスワイプしてポケモンGOを終了し、再起動してみるとほぼ必ずログインに失敗します。

ポケモンGOのバージョンはv0.33.0で、Xperiaはソニーの最新のストックROM(Android 5.1.1)です。

ゲームサーバーへの負荷が高いのであれば、周りのプレーヤーも影響があるはずですが、確認すると私だけがログインできない。iPhoneやサムソンのギャラクシーで私のグーグルのアカウントでログインするとちゃんとできるので、私のアカウントになにか問題あるわけではない(Banとか食らっているわけではない)。

という訳でこれはどうもXperia端末の不具合。モバイルデータLTEを止めて、フリーのWiFiスポットに移動するなどして、WiFiでログインするとXperiaでもログインできてしまうので、データ通信モジュールのハードかドライバーの問題っぽい。

また、ちゃんとゲームからサインアウトして、再ログインしようとしてもモバイルデータだと高確率で失敗する。

ポケモンGO以外のアプリはXperiaでもちゃんと動くので、データ通信自体は動いている。ポケモンGOのログインだけどうやっても失敗する。でも2-3日に一度くらいは、モバイルデータ通信でもログインできる時がある。3Gに切り替えたり、Google Playのサービスを再起動したり、あらゆるキャッシュを消したり、なにやってもだめ。

結論から行くと、下記の④の端末をアンロックして、ちょっと前のROM(10.7.A.0.222 )に焼きなおすことでログインできるようになりました。

あまりググっても同様の症状の人を見かけないので私の端末が長いことつかって、OTAでROMをアップデートや、ソフトのインストール・アンインストールの繰り返しでAndroidが不安定になっていただけかもしれません。

対処法は4つ

私の場合は:

① フリーのWiFiスポット等に移動し、ポケモンGOを一度終了し、データ通信を切り、WiFiで一度ログインしてからデータ通信に切り替える。

② フリーのWiFiスポットなどがない場合、端末をもう一つ持ち歩いて、そっちのデータ通信を「Bluetoothでインターネットを共有」する設定をする。この状態で①同様にポケモンGOを一度終了し、再起動してログインし直す。成功したら自分のデータ通信に切り替える。

という対処法が有効。下に追記したようにCyanogenMODを入れるとモバイルでもログインできるようになる。

ログインできないとアクセス集中によりログイン失敗のメッセージがでることがあるが、これはWiFiもデータ通信も切った状態でログインしようとしても出ることがあるので、あまり信用していない。本来はインターネット接続がありませんというエラーがでなければ行けないが、このエラーをすっ飛ばしてサーバーアクセス集中のメッセージがでてくるのだ。

しょうが無いので、家から出る前にWiFiでログインし、家を出てすぐデータ通信に切り替え、ポケスポットをスキャンしたりして動作を確認して、ようやく出発。という流れ。

③ CyanogenMODにする。ソニーの純正ストックのROMに入っているドライバーの問題だとしたら、CyanogenMODにしたらドライバーが更新されてまともになるのかもしれないと、やってみたらログイン問題は解決した。

cm12でAndroid 5.1.1の最終リリース版にしてみたら、ログインの問題は解消し、スリープの設定を無視して、すぐスリープになってしまう問題も解消。しかし、発熱が余計にひどくなり、熱暴走しだすとゲームがもっさりいと遅くなる。GPSの失いやすさも相変わらず。バッテリーの持ちも余計悪くなった。

う~む、ログインの問題は大きいので、ポケモンGOを遊ぶ状況は改善したが、その他の用途では正規版の方が絶対いい。CyanogenMODを一番新しいNightly版にしてみても多分ダメそうだが・・。

新たな解決法を追記

④ Flash toolでちょっと前のROM(10.7.A.0.222 )に戻る。

下記のFlash toolでcm12.1からSonyのストックROMへと戻ってみた。すると発熱もcmより改善するのは当たり前として、なぜかログインの問題まで解決したようだ。ポケモンGOの0.35.0が出た日にやったので、ポケモンGOのバージョンアップのおかげという説も捨てられないが。

PC companionだと、0222から10.7.A.0.228へとバージョンアップできる。なぜかOTAはできない模様。ログインの問題は0228で起こっていたので、躊躇しているが、もしかしたら諸々の設定をワイプして再インストールしたのが良かったのかもしれないので、0228でも大丈夫かもしれない。

とりあえず、これですべての問題が解決した。

Sonyのカメラアプリ好きだったので戻ってこれてよかった。ポケモンGOのパフォーマンスもGPSの精度・安定度も前より向上している気がする。Androidもウィンドウズみたいに定期的な再インストールが大事だったりするのだろうか。Avast!をまだいれてないのでAvast!が干渉していた可能性を検証せねば。

Sonyの正規のROMに戻る

このビデオによると、CyanogenMODを入れたXperiaからSonyの正規のROMに戻るには、普通にSonyのFlash toolを使えばいいらしい。

cm12.1を入れた結果、ソニー独自のAndroidのチューニングによって、発熱がかなり抑えられていて、それがパフォーマンスの安定・向上につながっているのがわかったので、ポケモンGOを遊ばない限りはストックROMを使うのが一番いい良いようだ。

iPhoneとGalaxy Note との比較

Galaxy Note IIという初代Xperia Zよりも古いサムソンの端末と最新のiPhone 6でしばらくポケモンGOをやったところXperiaのクソさが目に余って悲しくなったので箇条書き。

値段的にもリリース時期もiPhone 6 > Xperia Z > ギャラクシー Note II だが、

1. ギャラクシーはGPSがかなりつながりやすく、正確・安定。Xperiaだとバスの窓側の席に座り、太陽光に直接あたるように気をつけなければGPS信号が見つかりませんとエラーになり復帰するのに1-2分待たされるが、ギャラクシーだと窓側席から一つ内側の席でも余裕で追跡される。iPhoneは更にGPSの追跡の滑らかさが上。

2. バッテリーの持ち、充電がよい。Xperiaだと画面の輝度を日陰に行かないと見えない程度でまで下げても2.1Aの急速充電器で充電しながらポケモンGOをプレイするとみるみる電池が減っていく。ギャラクシーだと同じ充電器につなげるとプレイ中でもみるみると充電されていく。iPhoneはギャラクシーより更に電池の減りが異常にすくない。

3. ポケモンGOのプレイ中は画面がスリープにならないはずだが、Xperiaではどう設定してもなぜも20秒程度でスリープになるので、常にタップして起こし続ける必要がある。ソニー独自のスタミナモードとかその辺のせいだろうか。ギャラクシーやiPhoneでは問題なし。

4. 上記のログインの問題はXperia(ストックROM)だけ。

5. 発熱がすごい(Sonyのストックでも、cm12.1は更に酷い)。Xperiaは背面上部が熱くなって持てなくなる。熱暴走してソフトが落ちることもある。ギャラクシーNote IIはでかいからか、まったく発熱を感じない。iPhone 6は小さいからかNote IIよりは発熱を感じるがまあ気にならない。

アップルやサムソンは販売台数が桁違いなので、製品をつくるとき良い部品を大量に発注して、買い占めてしまい、安くいい物を仕入れているが、世界市場を無視して、日本市場を食い合っている日本のメーカーにはおこぼれの部品しか回ってこないし足元を見られて高い。そういう光景が目に浮かぶ。

2016年8月 5日 (金)

古いGalaxy note IIでポケモンGo

手元にある古いけどまだまだ全然使えるサムソンのギャラクシーノート(GT-N7100)にポケモンGoを入れようとおもったが、Play Storeに表示されない。他のデバイスで表示させて、リンクを共有するからアプリへの直接リンクを調べて、

https://play.google.com/store/apps/details?id=com.nianticlabs.pokemongo

へ言ってみても、[インストール]ボタンが表示されない。。。

調べてみるとデバイスが公式にはサムソンがAndroid の4.4をサポートしていないので、Nianticの方でサポート外扱いにしてある模様で、CyanogenModでAndroid 4.4.4が走っているのに関わらずインストールさせてくれない。CM12にアップデートしてAndoroid 5.1.1にしても無駄だった。

という訳で更に調べると、build.propをいじってノート4の振りをしろとある。

CM12にはSuperuserがついてくるので、SettingsからAbout phoneへ行き、Build numberをクリックしまくって、Developper optionsを有効化して、そこからルートアクセスを有効化する(Apps onlyでおk)。

Solid Explorer File Managerをインストールして、左からスワイプして、メニューを出して、Rootをマウント。Root / Systemにあるbuild.propを開いて、編集。

build.propについてはこちら

ro.product.model GT-N7100
ro.product.name t03gxx
ro.product.device t03g

ro.product.model=SM-N910S
ro.product.name=SM-N910S
ro.product.device=SM-N910S

に変更。再起動。SettingsからAbout phoneに行き、デバイス名が変わっていれば成功。 Play Storeに行き、ポケモンGoを検索。インストール。

追記

これをやると、なぜか電話をかけると音声なしになる症状が発生するので、build.propを元に戻す。PokemonGoにアップデートがあったらまた編集するしかなさそう。

8月8日のアップデートで、実際にbuild.propを編集、ポケモンアップデート、build.propを戻すとやってみたら、build.propを戻したのに電話の声が聞こえない症状が続いてしまって困った。

今回、いろいろググったら同じような症状はかなりあるものの、解決策は諸説あるも決定的なものがなく、原因は特定されていないらしい。

いろいろGoogle Play ServiceやPhoneのアプリを止めたりキャッシュを消したりして、再起動してもだめで、Tex messageのアプリの設定をいろいろいじってから再起動したらなんか治ったけど実際なにが効いたのかは不明。

そんななかググッている最中に見つけたこのビデオが超ツボにハマってしまったので、自分用の忘備録として貼っておく。短いので全編みていただければわかると思うけど、ハイライトは1:50あたりから・・・。すごい・・。

延々と電話の音声がでない症状を説明して、あれやってもダメこれやってもだめ、いよいよ解決法の説明が始まる!と匂わせて、「もし解決法をしっていたらコメント欄によろしくね」とシレーっと言い放つ。そしてビデオを気に入ったらチャネルに登録しろだのいろいろテンプレなコメントしてビデオ終了。いやーすごいの見た。ものすごいエンタメ系として優秀なのでオススメです。

ビデオのタイトルの「at」の用法とか、ビデオ中のI not found no solutionとか、いろいろ文法間違っているのもポイント。

なんかこの人のホームページはスペイン語で個人でパソコン関係の事業をしているっぽいけど、英語のなまりがスペイン語ネイティブっぽくなくなんかインドっぽいとおもったら名前は中東系のフセインさんで、スペイン語もネイティブじゃないのかも。よく聴くとインドのアクセントとも違うから、名前通りにアラブ系なのかな。アラブ系とはあまり話したことがないが妙に納得した。

2016年7月14日 (木)

CaffeをWindows 7でcuDNN付きでビルド。

しばらくTheano/Lasagneでディープラーニングをしてましたが、Caffeのモデル動物園からImageNetのデータで学習済のモデルをLasagneに読み込んで動かしてみたらどうもCaffeよりかなり遅いっぽいので、Caffeを試してみようとおもったんですが、CaffeのPythonモジュールはVS2013で自分でC/C++ソースからビルドしないといけないのですね。これがもうめっちゃ大変でしたが、なんとか丸2日ほど格闘してできたので覚書。ビルドできたPythonモジュールは229MBあり巨大。公式にサポートされているUbuntuでも試したんだけどなぜかmakeできなかったのにウィンドウズでできた不思議。

速度の問題は、たぶん私のTheano/Lasagneの環境になにか問題があるだけで、この論文によるとCaffeとTheanoの速度はあまり違いがないはずなんですが、何が問題なのか未だにわかりません。それにしてもTensorFlowは家庭用PCでGPU一基だとまだCaffe・Theanoよりも遅いですね。

目安として「GPUでCUDAが使えるとCPUの大体10倍速い。CUDAにあわせてcuDNNが使えるとさらに10倍速い。」と言われますが、私の環境ではCaffeはCPUでもGPUでもTheanoの10倍くらい速いのでCUDA周りだけではなく、BLASとかも関係してそう。ふーむ。Theanoは汎用性高く、Caffeはコンピューターヴィジョンに割りと特化しているんで、ImageNetのモデルだとCaffeが有利?それにしても差が大きすぎ。

まあなんにせよ(私の環境では)Caffeは速い!素晴らしいです。CPUでもForwardパスだけなら使えそうな速度が出て満足。GPUでガンガントレーニング回して、デプロイメントはCPUでも行けるという感じ。

私は試してませんが、このブログCUDA付きでビルドしたWindows 7のCaffeがおいてありました。どうしてもビルドできない場合、試して見るんもありかもしれませんが、大丈夫ですかね。

ビルド方法

Caffeは公式にはLinuxしかサポートされていないので、ユーザーがボランティアで移植している状態だったようですが、マイクソソフトが最近CaffeをWindowsに移植しました。これが一番新しく安定してて、ビルドも簡単です。

ビルド方法はhttps://github.com/BVLC/caffe/tree/windowsのReadmeにある方法でだいたいそのままでオッケーです。

まず、マイクソソフトがメンテナンスしているブランチを取ってきます。gitでcloneしてwindowsブランチをcheckoutするか、単にzipをダウンロードするかします。zipの方が簡単。

このマイクソソフト版CaffeはVS2013に同梱されているNuGetというパッケージマネージメントツールをつかって勝手にOpenCVとかBoostとか必要なものを揃えてくれるのでビルドが楽ちんなんですが、それでもいろいろと落とし穴(下記参照)があってC/C++のコンパイルに慣れていない私の場合かなり苦労しました。

あとの手順は

CommonSettings.propsを変更。

CUDA Toolkit 7.5をインストール

cuDNN v4をインストール GPUが対応しているか確認。cuDNNありなしでは10倍くらい速度が違うらしいので最低でもCUDA Compute Capabilityが3.0くらいないと厳しい。今買うならGTX 1070ですかね。Compute Capability 6.2のはず。

玄人志向 ビデオカードGEFORCE GTX 1070搭載 コストダウンモデル GF-GTX1070-E8GB/BLF

Pythonは書いている通りMinicondaを使う。私の場合はMiniconda2ではなくMiniconda3だったので

conda create -n caffe python=2.7 numpy scipy matplotlib scikit-image pip
pip install protobuf

で作りました。

あとはVisual Studio 2013のコミュニティエディションをインストールして、caffe\windowsフォルダにあるソリューションファイルCaffe.slnを開いて、ビルドします。

Caffe_exe

ビルドしたcaffe.exeを起動して、メッセージが出るのを確認。

最後に

caffe\Build\x64\Release\pycaffeのcaffeフォルダをsite-packagesにコピー。

Anacondaのenvからimport caffeができたら終了。

注意点

落とし穴①

Python2.7でも3.5でもCUDA toolkitは7.5をインストールする。Theanoの公式サイトのインストールガイドにはPython2.7はVS2008が必要な関係でCUDAは5.5までしか使えないと書いている。しかし、実際は7.5あっさり使えた。AnacondaのPythonだから?GPUが新し目だとCUDA toolkit 5.5ではサポートないのではまった。

落とし穴②

CUDA関係のヘッダーファイルにUnicode文字があり、これが原因でビルドエラーになる。

対処法は、コンパネの「地域と言語」の設定からNon-Unicodeアプリの言語設定でEnglishを選択する。私はJapaneseにしていたのでこれが原因でエラーになりました。

落とし穴③

CommonSettings.propsをぬかりなく変更する。

7行目  CpuOnlyBuild を fasle か true に設定する。

8行目  UseCuDNN を fasle か true に設定する。 もちろんCpuOnlyBuildがtrueならfalseでないといけない。

9行目  CudaVersion は普通は7.5のままでいいでしょう。

13行目 PythonSupport はもちろん true にする。

21行目 CudaArchitectureはCUDA Compute Capability tableにあるCompute Capabilityの値にする。例えばGeForce GTX 960だと5.0なのでcompute_50,sm_50にして、それ以外を削除するとビルドがちょっと速くなる。初期値にcompute_35,sm_35;compute_52,sm_52とあるが3.0まで落としてもビルドできた。やっぱ3.5以上でないとダメみたい。2.1だとnvccがなぜか怒る。Theanoは2.1でも使えるのでなぜだろう?

公式サイトだと、3.0以上のGPUをLinux上でしかテストしてないので、それ以外の環境では使えるかわからないけどたぶんうごくんじゃない?みたいに書いている。Linuxなら古いGPUも行けるのかも。ウィンドウズではおそらく3.5以上が必須っぽい。

CUDA compute capability: devices with compute capability <= 2.0 may have to reduce CUDA thread numbers and batch sizes due to hardware constraints. Brew with caution; we recommend compute capability >= 3.0.

24行目 CuDnnPathは私の場合空のままで、cuDNNのcudnn64_4.dllやcudnn.lib、cudnn.hファイルはC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5以下の対応するフォルダにコピーした。

48行目 PythonDirをちゃんと設定する。初期値はC:\Miniconda2\になっているけど、私の場合Anacondaの64ビットの2.7のenvをつくったのでそのフォルダ(C:\Miniconda3\envs\caffe)を指定した。

落とし穴④

Visual Studioでビルドする前に色々と設定を確認する。

VS2013の使い方が全然判らないので、このブログのBefore compileとCompileの項目をかなり参考にしました。

とくに「ビルド」メニューのコンフィグレーションマネージャーからすべてのプロジェクトをReleaseとx64にするのを忘れないこと。

ソリューションエクスプローラーからcaffeなどのプロジェクトを右クリックして、プロパティをみて、コンフィグレーションプロパティの一般(General)にあるConfiguration typeをApplication (.exe)にするのを忘れない。

ビルド失敗したらCleanしてからビルドし直す。

などなど。いろいろもう忘れたけど確認することがあります。でかいのでまずはlibcaffeをビルドするのが吉かもしれません。一つを除いてぜんぶlibcaffeに依存しているのでlibcaffeがビルドできないと始まりませんし、これがビルドできれば残りはすんなり行くと思います。

2016年6月 8日 (水)

Noteflightの楽譜をPage Viewモードで貼り付ける

Noteflightの楽譜を普通に貼り付けるとStrip Viewモードで、延々と横スクロールしていくタイプで、これは省スペースでいいかもしれないが、自分のブログに貼るにはPage Viewが良い。

Noteflight Embed API を見てみるとdisplayModeというパラメータがあって、paginatedとstripを指定できるようだ。

というわけでiframeのscrの部分に

"https://www.noteflight.com/embed/e57548a6e569ef2b2c134b135d9e2e5c4386f407?scale=1&app=html5&displayMode=paginated"

という感じにdisplayMode=paginatedを足してやったらうまく表示された。

Noteflight楽しい。。。

2016年5月30日 (月)

Feedlyで自分のブログの登録人数を調べる

しばらく更新していませんが、いろいろ書きたいネタはあるんですが、長くなりそうで、なかなか時間が取れないので小ネタを放出しておきます。

おかげ様で当ブログも100人を超えるFeedlyの登録者があるようなのですが、Feedlyの仕様上、登録者数はけっこう調べるのが面倒くさい。

Feedlyで表示される登録者数は、Feedlyに登録した時点の数字が更新されることなくずっと残るので、最新の人数が知りたいときはFeedlyにブログを追加する手順で自分のブログのURLを検索すると、検索結果に登録者数付きで表示されるのでこれをメモっていたんですが、今日やってみると人数が表示されなくなっている。どうもFeedly Cloud APIの次期バージョンの公開が近いから、いろいろ中身をいじっているものと推定される。

困ったのでグーグル先生にお伺いを立てると、スタックオーバーフローによい回答があった。

http://blog.shonanshachu.com/というブログをやっている人が回答してるようで、例ではそのブログのフィードのURLになっていますが、これ多分FeedlyのCloud APIを叩いているみたいですが、要はhttp://cloud.feedly.com/v3/feeds/feed%2Fhttp%3A%2F%2Fの後の部分に自分のブログのRSSフィードが出てくるURLをちゃんとエスケープして入れてやればいいようです(つまりスラッシュを%2Fにする)。

これを当ブログ用に多少修正してみると、以下の様になりました。

http://cloud.feedly.com/v3/feeds/feed%2Fhttp%3A%2F%2Fhennohito.cocolog-nifty.com%2Fblog%2Findex.rdf

http://cloud.feedly.com/v3/feeds/feed%2Fhttp%3A%2F%2Fhennohito.cocolog-nifty.com%2Fblog%2Fatom.xml

2つあるのはRSSのフィードがRDF形式のものとATOMの物とあり、どちらで登録しているかはユーザー次第なので両方合わせた数が登録者の合計になるためです。

回答ではcurlコマンドしていますが、別にURLを直接Chromeで開いても、JSONかなんかのアウトプットが表示されて、subscribersの部分に登録者数がみれました。

という訳で、記事執筆時ではRDFが18人、ATOMが104人で合計122人の登録があるようです。ありがとうございます。更新できていないのに、登録が増えているので、ポチポチがんばって更新していきたいと思います・・。

2016年3月 5日 (土)

Theano用にCUDAができるお手ごろGPUを物色中。GTX-960が良さげ

追記。 NVIDIAの最新機種GTX-1080が発表になりましたね。だいぶ安くなったようですが、当方にはまだ高いです・・。でも性能と価格の兼ね合いは最高によさそう。

本当にGPUは必要なのか?

Theanoを使ってCPUのみでディープラーニングって現実的なのだろうか?というのは常々素朴な疑問だったけど、前記事にあるDaniel Nouri氏による有名なLasagne/nolearn/Theanoをつかった深層畳み込みニューラルネットワークのチュートリアルを実際にやってみたら現実的には必須と判明した。6000円くらいの中古GPUでも10-20倍はやいので買うべし。

私の環境(CORE i7-2600とGeForce 550Ti)では、コンボリューションのない、一層の潜れ層しかない単純なネット(チュートリアルのnet1)だと、CPUでも1エポックに0.3-0.4秒なので1000エポックしても400秒程度。十分待てる。GPUはさらに10倍くらい速いけども。でも単純なコンボリューションのないパーセプトロンネットワークでは精度悪くて使いものにならない。

そこでちょっと発展させて、2層のコンボリューション層のあるnet2にいくと1エポックがCPUで116秒になった。1000エポックくらいトレーニングすると20時間くらいかかる。これがGPUだと1エポックが6.4秒くらいになって2時間以内。チュートリアルのノーリさんのもっているGPU(おそらくGeForce GTX TITAN とか)だと20分で終了するそうな。

パラメータチューニング一回に2時間もかかるとなると、すでに大変なのに20時間だと一日一回しかできない。扱っている画像も96x96の小さなものですでにこんなの。

お買い得なGPUは?

じゃあ、CUDA用にいいGPUを買うとするとなにがよいのか?となるんだけど、前にツイートしたようにGTX 980もしくはGTX 980 Tiというのがハイエンド機の中でコスパがよいらしい。

それでもGTX-980はアメリカのebayで5万くらいか。高い。まあTitanの15万にくらべれば・・・。

日本のアマゾンではGTX-980(上)は6万ちょっと超えるくらいか。PCでゲームもする人ならついでにいいかもしれないけど、私の場合、嫁に怒られるだけ。。でも機械学習に本気の人にはこれが良さそうです。CUDA Capability 5.2とは現状最高バージョンがTitanの5.3なのですごい。

GTX680(CUDA Capability 3.0)の3GBモデルというのも予算がきつい人用にオススメされているが、アマゾンでは見当たらず。その代わり2GBのモデルがあった(下)。

それでも中古で3.7万かぁ。。

私の古いGeForce 550TiでもないよりマシというかCPUに比べると段違い。550Tiは米ebayで即決価格が60ドルというのを見たので、CUDA対応のGPUがない人は550-TiのようなCUDA Capabilityが2.1以上の古くて安いGPUを買うのが吉。

GTX-550-Tiの中古が日本のアマゾンで6000円代(上)というのを見つけた。とりあえずという人はこのクラスで十分と思います。

メモリに関しては上のツイートで紹介した記事によると、ニューロンの重み付けの更新に勾配を計算するときにGPUではフーリエ変換を使う場合が多くて、これがメモリを食うらしいので、ディープラーニングするには割りとメモリがいるらしい。とはいえ、6GBくらいあれば十分で、4GBでもまあ大抵の問題はメモリに収まるといっているので、4GBくらいが初心者にはいいかもしれないし、余裕があれば6GBにしておきたいところ。

あとはcuDNNというCUDAを使ったディープラーニング用のライブラリがあって、最近のバージョンでは畳み込みの計算がとても速くなる変更があったらしいが、あまり古いGPU(たとえばGTX 580)だと対象外になるので、注意。たぶんcompute capabilityが3.5以上ないとそもそもcuDNNを有効にできないという可能性が高い。 TheanoはcuDNN3をサポート。Theano公式ドキュメンテーションにはLinuxのみインストール方法がかいてある。ウィンドウズは・・。

ちなみに私のTheanoはcuDNNなしで使っているが、それでもGeForce 550TiはCPUより10-20倍速いです。

まとめるとCUDA compute capabilityが3.5以上でメモリが4-6GBのGPUが狙い目か。GTX-780とか780TiがCUDA compute capability 3.5以上の一番安いモデルだが、メモリが3GBという制限があるためか、上のレビューではまったく触れられていない。

ベンチマークみるとGTX-980 Tiが圧倒的だし、6 GBにできてCUDA compute capability 5.2は長く戦力になりそうで魅力。。でも5-6万はたかい・・。

そこでみつけた掘り出し物がこのGTX-960。

レビュー中にもちらっと触れられているが、このGTX-960はディープラーニング向きのGPUらしく、上であげたぎりぎりのラインをクリアしていて、CUDA compute capability 5.2で4 GBで新品が2.8万円程度。上の中古GTX-680の2GB版よりも新しいモデルなのに安いじゃないか。うむ。これなら手がだせそう!

2016年2月27日 (土)

ウィンドウズでLasagne/nolearn/Theanoで深層畳み込みニューラルネットワークしてみる

Lasagneの開発コアメンバーでもあり、nolearnという機械学習のPythonライブラリを作ったDaniel Nouri氏による有名なLasagne/nolearn/Theanoをつかった深層畳み込みニューラルネットワークのチュートリアルをやってみているが、インストールに苦労したので覚書。(ところで発音はダニエル・ノーリでいいのかな。モロッコ系の名前らしいが。ツイートはドイツ語と英語でくるのでドイツ人なのかな。)

Lasagne/nolearn/Theanoと、これらのライブラリの関係がややこしいが、Theanoは多次元配列の計算をMathematicaみたいにシンボリックな表記で記述して、それをCPUやGPUをつかって計算するCコードを生成するライブラリでニューロンの学習に必要な勾配の計算に特化している、LasagneはTheanoをつかってニューラルネットワークをやる時のライブラリ。nolearnはTheanoやLasagneなどをつかって深層畳み込みニューラルネットワーク学習ができるライブラリで、特にLasagneをよくサポートしている。Theanoだけでも深層畳み込みニューラルネットワーク学習はもちろんできるが、その場合数式をちゃんと書かないといけないと思うので、Lasagneを使うと楽。Lasagneはラザニアの複数形らしい。

一般的な機械学習用のScikit-learnとくらべるとTheanoはおもにニューラルネットに特化しているので、ちょっと別用途というかAPIも違って混じらない感じなのだけど、nolearn経由でLasagneを使うとScikit-learnのような感じでディープラーニングできるということらしい。

さて、最初はLinux Mint 17でチュートリアルどおりにCUDA tooklitいれてTheano/Lasagneのインストール進めて全く問題なくできたのでリナックス最高!とおもったが、(無謀にも)同じことをウィンドウズでやってみるとまずTheanoのインストールが大変だったのと、Lasagneとnolearnもバージョンも新しくないと行けないのでやっぱりハマった。あとで考えるとLinuxではチュートリアルどおりPython27で最新のCUDA toolkitいれて、Theanoはリリースの0.7でLasagneはチュートリアルのrequirement.txtにあるバージョンで、nolearnはLasagneの依存性として勝手に入ったので簡単だったが、ウィンドウズではPython27では最新のCUDA toolkitが使えない関係でPython 3.5にしたのが困難の始まりだった。

参考: ウィンドウズでCUDA付きでTheanoインストール!Python3.5でもできた。

結論から行くと

チュートリアルのコードが動いたライブラリのバージョンの組み合わせは

PythonはAnacondaのPython 3.5.1 |Continuum Analytics, Inc.| (default, Jan 29 2016, 15:01:46) [MSC v.1900 64 bit (AMD64)]上で

Theano==0.8.git

Lasagne==0.2.git

nolearn==0.6a0.dev0

だった。

インストールはふつうにTheanoをpip installすると現在は0.7のリリース版になり、Lasagneとnolearnもちょっと古いのを入れるとLasagneのインポート中にnolearnがmseというサブモジュールをインポートしようとしてエラーになる。

これはnolearnのバージョンが低いのが原因なので、最新のnolearnのインストール方法に従って新しいnolearnを入れようとするとまず、

pip install -r https://raw.githubusercontent.com/dnouri/nolearn/master/requirements.txt

で依存性パッケージいれてから、

pip install git+https://github.com/dnouri/nolearn.git@master#egg=nolearn==0.7.git

をしろとある。Linuxならこれでうまくいくのかもしれないが、ウィンドウズだと依存性パッケージのインストール中にすでに入っているscipyをビルドしようとしてエラー。

なので、requirements.txtの内容を確認して、手動でconda installしまくって依存性パッケージを入れる。condaにないLasagneは

pip install https://github.com/Lasagne/Lasagne/archive/master.zip

とすると0.2.dev1がはいる。

Theanoはgitで普通にcloneした最新ソースのmaster/HEADのままpython setup.py installすると0.8.0.dev0がインストールされた。

この状態でnolearnを入れる。

pip install git+https://github.com/dnouri/nolearn.git@master#egg=nolearn==0.7.git

すると0.7をリクエストしている割に0.6a0.dev0がインストールされたがチュートリアルのコード動いたので結果オーライ。

Linuxだとなぜかこの辺が全然問題なくチュートリアルどおりできてしまうのは、機械学習関連はやっぱり開発者もユーザーも圧倒的にLinuxが多いからだろうなぁ。

より以前の記事一覧

広告欄


やっつけタイムライン

広告欄

はてブ

人目の訪問です。

  • follow us in feedly

    かなり更新が不定期なため、RSSリーダーをオススメします。現在Feedlyに122人登録頂いています。多謝!RSSを表示

    ブログランキング用 にほんブログ村 IT技術ブログ Pythonへ ブログランキングならblogram






    Jenny Mayhem
2017年7月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

IT技術注目記事

無料ブログはココログ