2018年12月20日木曜日

Pythonのリストを一部シャッフルする

基本ここを参照。
https://qiita.com/joe_banana/items/3ebe185c32e7d7a1fa85

0、1~19、20、21~29・・・・
のリストで0,20、・・・は固定して
1~19内、21~29内・・・でシャッフル。
余りは削除。

import random

k=20

f = open('train_data.txt', 'r')
areas = f.readlines()

amari=len(areas)%k
del areas[len(areas)-amari:]

for i in range(len(areas)):
areas_b=areas[i*k+1:i*k+19]
random.shuffle(areas_b)
areas[i*k+1:i*k+19]=areas_b

f.close()

f = open('new_train_data.txt', 'w+')
f.writelines(areas)
f.close

2018年12月12日水曜日

Ubuntu16.04LTSにChainerをInstallする(GTX1080 & GTX1080Ti)

Ubuntu14.04LTSのサポート終了も迫ってきておりますので、
Ubuntu16.04LTSでChainerを使えるようにセットアップしました。

sudo do-release-upgrade

というコマンドを打てば、OSのアップグレードは通常問題なく行われます。が、今回はSSDをクリーンにして、そこへUbuntu16.04.5LTSとChainerを導入しました。
**(後日、別のPC2台「1台は1080、もう一台は1080Ti」では、sudo do-release-upgradeを試みました。オプションはすべてデフォルト対応でうまくアップグレードされました。うまくいくかどうかはドライバーのバージョンなどに依存しそうな気もしていますが、do-release-upgradeは超便利なので、とりあえずこっちでやってみて、もしダメならそのとき考えるという方針がいいとおもいます)。

基本的には
UbuntuにChainerをInstallする(GTX1080)
と同じやり方です。

変更点や気になったところをいくつか列挙します。

(1)今回は4)~11)は飛ばしてドライバー導入から始めました。今回のPCはマザーのビデオポートがないので、最初からGTX1080にディスプレイが繋がっています。最近のUbuntuには汎用ドライバーが組み込まれているので、もんだいなく画面は映ります。ただし、GTX1080専用のドライバーではありません。人によっては、この汎用ドライバーを使えなくしてから、GTX1080専用のドライバーを導入しているようです(途中X-Windowが使えなくなるかもです)。今回は邪魔くさいので、汎用ドライバーはキルしていません。

(2)Nvidiaドライバーは、この時点(2018年12月12日)での最新は415でしたので、nvidia-415をいれましたが、CUDA Toolkit(バージョン10)を入れた時点で410にダウングレードされました。ここでnvidia-smiを実行しますと、Driver/Library version mismatchエラーがでます。前回はドライバーバージョンを再び無理無理上げましたが、今回はそのままリブートしました(リブート前に念のため415は手動でも削除)。リブートしてnvidia-smiを実行すると410で動いているのが確認されました。

(3)sudo apt-get install cudaのあと、apt-keyの設定をコマンド上で指示されていたので、指示通りに設定しました。

(4)パスを通した後、apt系、pip系のインストールをしました(可能な限りたくさん)。前回やりませんでしたが、今回はsudo pip install chainerの前に、sudo pip install cupyを手動で行いました(インストールに結構時間がかかります)。

(5)本質的なことではないのですが、この時点でpipはバージョン8です。最新はバージョン18(番号デカい!)ですので、「バージョンアップよろしく」というメッセージがpipをつかうたびにでますが、これは無視しました。再帰的なバージョンアップは好ましくないとおもいます。pipはもともとaptで導入したので、aptでアップグレードしたほうがいいので、apt側の対応を待ちます。

Chainerは、まだ18.04LTSはリコメンドしていませんでの、この状態がいまのところベストかとおもいます。

2018年12月7日金曜日

フォルダー名とディレクトリー名にスペース禁止

【リナックス豆知識】

よくみかけますよね。
_ アンダーバー。

これには重要な意味があります。
コマンド命令をするとすぐにわかます。
スペースがあると命令が途切れてしまいます。
そこでアンダーバーです。

フォルダー名とディレクトリー名にスペースは使ってはいけないのです。
OSで禁止されていないのが変ですが避けるべきものです。
どのOSでもアンダーバーを使うクセをつけておくのがよいとおもいます。


2018年12月4日火曜日

Win10のグラボ(GTX750Ti)をGTX1080Tiに換装

GTX750Tiで動いているWin10のグラボをGTX1080Tiに換装しました。
基本的には下記ふたつのサイトを参照しました。

【できる!グラボ交換】 グラフィックボード・ビデオカードの増設・換装の方法
http://blog.livedoor.jp/wisteriear/archives/1061882137.html

Windows 10 をセーフモードで起動する方法、覚えておくべき注意事項
https://freesoft.tvbok.com/win10/safemode/how-to-enter-safe-mode.html
(4. msconfigを利用する場合で対応)

ポイントとしては、
1)十分な電源余力があるか(750Wくらい。電源ソケットに余り必要)
2)パソコンの筐体に十分な大きさがあるか(GTX1080Tiはとにかく長い)
の2点です。

【できる!グラボ交換】 の通りに作業を行い、グラボを付けたら再起動させ、NVIDIAの最新ドライバーインストーラーを起動させればあとは自動的にセットアップされます。いちおう予めNVIDIAの最新ドライバーインストーラーはダウンロードしておき、LANは切り離しておきました。msconfigを利用する場合は、マニュアルで元の設定に戻しましょうと書かれてありますが、勝手にもとにもどりました。SONYのNNCを走らせてGPUの働きと、温度をチェックすれば作業完了です。温度はELSA System Graphなどでチェックできます。

ちなみにこのグラボは色が虹のように変わるのですが、外からみえない...

WindowsのWSL2は深層学習にガッツリ使える??

いろいろ検討した結果、 「WindowsのWSL2は深層学習に使える」 と、結論しましたので、ここに記録。 が、諸事情によりタイトルは??を付けました。 諸事情は最後に。 まず、 Windows及びNvidia driverはとことんアップデートする。 その後、 https://...