読者です 読者をやめる 読者になる 読者になる

読了:ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

DNN Python

ゼロから作る Deep Learning: Amazon.co.jp 

 

 TensorFlow など Deep learning のライブラリを使わず、Python3 (numpyなど使いますが)のみで Deep Neural Network, (DNN) を実装する、という本です。

 Deep Learning ライブラリや、General-Purpose computing on GPU, (GPGPU) ライブラリの使い方は書いていないです。従って、 TensorFlow/CAFFE/TEANO などのライブラリや、CUDA/CuDNN/OpenCV などの GPGPU は自分で勉強する必要あります。

  本書では CNN やRNN は実装しません。恐らく実際に Neural Network で何かやるには、CNN や RNN でないとキビシイ。そのため、この本だけの知識では、 Deep Learning で新しい何かをやるのは難しそうです。

(余談ですが、Google 社の DL ライブラリ、TensorFlow のチュートリアルには CNN や RNN の例もあったと思います。TF は GPU の有無にかかわらず、同じようにスクリプトを書けるそうですので、初心者にはお勧めなのだろうと思います)

 

 Neural network の各要素に、詳細な説明と実装がされているのが良い点。

 パーセプトロン、AND/OR/NAND/XORgate などから、様々な activation function 、学習を効率化する仕組みや、過学習を防ぐ方法 など、様々な要素を紹介しています。

 

 DNN を全く知らなかったので、色々勉強になりました。

 Neural Network のそれぞれの層で、

  情報 * 重み + バイアス

 という計算が、

  ベクトルの内積

 として一発で計算できるということですとか(これには感動しました)。

 

 他に、 back-propagation も多分、革命的な手法だったのだろうと思います。

 

 因みにですが、

  甘利俊一先生の「脳・心・人工知能

脳・心・人工知能 数理で脳を解き明かす (ブルーバックス) | 甘利俊一 | コンピュータサイエンス | Kindleストア | Amazon

という本に、

「back-propagation」などと最近では言われているが、これを「確率降下法」として最初に発見したのは私である。

 ということが書いてありました。

 「アカデミアとはこういうもの」という感じで、プログラミングとの違いが大変興味深いところ。

 

 Wikipedia を見ると、この手法が多くの研究者によって「再発見」されてきたことが分かります。バックプロパゲーション - Wikipedia 

 

 話は変わるが、研究というのは特許と違い、「発見に利益を求めない」ところが大変素晴らしいとは思います。

 けれど、こういう第一発見者=第一主義みたいのが、息苦しい。

 

 自分は今、プログラミングに興味があり、

 プログラミングの世界では、先人のコードを使うことはむしろ推奨され、それを無料で世界に公開した「github」なんてサイトもあります。

 

 「第一作成者は誰か」とか、「コードのインパクトファクター」「コードの被引用数」なんて、私の知る限りでは存在せず、

 

 「私が発見」とか「私の業績」とか血眼にならなくて良いので、プログラミングはいいな、と思います(もちろん、「できるプログラマ」が正当に評価されないことにつながり、問題もあります)。

 

 

 この本では、CNN や RNN など含め、比較的最近の研究まで紹介されています。一通りの知識を得ることができます。

 

 第一章の、 Python の簡単な説明も素晴らしいです。Python 入門書が一冊かけて説明するのを一章に凝縮してるので、網羅はできていません。しかし、本書を理解するには十分な内容です。

 

 昨年たくさん買い込んだ Python 入門書のある一冊で、

>>> 1+ 1

2

 を実行して

おめでとうございます!

あなたは今、Python プログラミングの世界に足を踏み入れました!!

みたいのがありましたが、

「1 + 1 を実行するために、Python 始めたんじゃないよ!」

 

 それと比べ、本書は明確な目的があります。Python を学ぶにも、「Deep Learningのため」と範囲を限定しているため、頭に入りやすかったです。

 

 さて、一周目は理解しないまま、「なんとなく」読み進めました。現在は二周目に入り、著者のコードを確認、「O'Reilly 入門 Python 3」 も並行しながら、本格的に読み進めています。

www.amazon.co.jp

 

 二周目でも理解できなかった所もあります。

  例:class の使い方。

>>> class TEST():

>>>    def __init__(self, name):

>>>        self.name = name

 

__init__  初期化とは???

self って何??? 

 

>>> t = TEST('example')

 なぜ

>>> TEST('example')

ではダメで、

>>> t = .....

で t に代入しなければ?

 とか

>>> sys.path.append(os.pardir)

頭では理解できてるけど、まだ細かな挙動が分からず

とか。

 

  一方で、「へー、こんなことできるんだー」

と理解できたコードもあり、

 

>>> if __main__ == '__name__': 

#スクリプトとして実行されたかどうかを判断する

  

 大変勉強になっています。

 

 ただ、最初に この本のスクリプトを試してみる時、どうしても

github から著者のコードを落としてくる

のと

コマンドラインでカレントディレクトリーを移動

の必要があります。

 

 ここで挫折する人がいると思いました。

 コマンドプロンプトとターミナルの使い方について記載があると、更に良かったと思います。

 

 また、

著者のスクリプトコマンドラインで実行する

と走るけれど、

自分で対話式に打ち込んでみる

とエラーが出ることもありました。

 

 対話式でも実行できるようコードを書き直すか、対話式で走らないコードは明記していただくと、良かったと思います。

 

 

因みに どこでエラーが出るかというと、 

例:p65

>>> def init_network():

(中略)

>>>     network['b3'] = np.array([0.1, 0.2])

>>> # 空行

>>>     return network

 

対話式の環境では、上記の

>>> # 空行

で関数定義が終了したと解釈され、

>>>     return network

でエラーとなる。

 

 本書で唯一、残念なところは、

本書を読んでも、DNN を作れるようにはならないこと

 です。

 「ゼロから作る」という題名ではありますが、最終的に、本書では、

著者が作成したコードを実行するだけ

 となってしまいます。たしかに著者は「ゼロから作った」のかもしれません。しかし、私のような Python 初心者は、コードを見ても、難解で理解不可能。著者のコードをただ実行するだけ となってしまいます。

 知識の乏しい読者のことを考え、著者が自分で実装してしたのだと思いますが、本書の題名には反すると思いました。

 

 つまり、このブログ記事の表現を借りると

blog.tinect.jp

 「Deep Learning を『分かった気になれる』本」、ということですね。 *1

 

 以上まとめますと、Deep Learning をやってみたい人、Python 3 を学んでみたい人におすすめな本です。

*1:「この本を読んでも、"Deep Learning" を理解できない」と言っているわけではありません。この本に書かれたことは、 Deep Learning の「基本」的なことだと思います。ただし本書だけでは不十分ということです

Deep Neural Network ライブラリ

DNN

 

Deep Neural Network (DNN) について知識がない私のために、

DNN を実装する(実際に作る)ために使う

「ライブラリ」について、

ネットで調べたまとめです。

 

DNN 界隈は高速で進化している最中です。

今後1年、2年で状況が全く変わってしまう可能性もあり、

注意が必要です。

 

ざっと調べた印象では

 実装のためには プログラミング言語C++Python を学ぶのが良い。

 GPU を使った演算処理、GPGPU が必須ですが、その実装は大変なので、ライブラリに肩代わりしてもらう感じのようです。

 人気がありそうなのは

 

長い歴史がある? Theano,

高速で研究開発も盛んなため人気な Caffe,

Google 発で注目集める TensorFlow 

 

という感じです。

 

 

 

 

 

目次

1.CUDA/CuDNN
2.TensorFlow
3.Theano
4.CNTK
5.CAFFE
6.Chainer

 

 

 

 

1.CUDA/CuDNN

CUDA

CUDA(Compute Unified Device Architecture:クーダ)とは、NVIDIAが提供するGPU向けのC言語統合開発環境

 

発表は2006年11月、CUDA 1.0の提供開始は2007年7月。

現在は CUDA 8.0 までバージョンアップしているが、最新版を使えるのは Pascal アーキテクチャNvidiaGPU のみ。ザックリ言うと、GeForce GTX 10x 系のみ!

(もし15万円出せるなら、TITAN X、50万円以上出せるなら TESLA という、高機能 GPU も CUDA 8.0 を使えます。また、Nvidia 社は、TITAN X を4枚載せた、Deep Learning に対応したコンピューター, DevBox を販売しています。アメリカ Amazon.com にて 12000 ドルで販売されていました。お金持ちの方はどうぞ)

 

後発のGPGPU関連技術にはOpenCL (1.0仕様公開は2008年) やDirectCompute, Radeon Instinct  などが存在し、これらは Nvidia 以外の GPU を使用できるらしい。

 

C言語以外からも使用することができる。

PythonPerlJava, .NET, Ruby, Lua, MATLAB, IDL, Mathematica などで。

 

CUDAはNVIDIA製のGPUでしか使えない

CUDA - Wikipedia

 

CuDNN

NVIDIA が自社製の GPU に向けて提供している Deep Neural Network (DNN) 開発用のライブラリ

DNNで使われる基本的な機能をまとめたもの。

Theano などの DNN ライブラリに合わせて使うことで、DNN の実装を大幅に省力化できる。らしい。

 

news.mynavi.jp

 

"cuDNNはNVIDIAが公開しているDeep Learning用のライブラリである。このライブラリを使うとCaffeやChainerなどのDeep Learning用のソフトウェアの速度が向上する。 この速度向上に寄与している最も大きな部分がConvolutionの高速化である。"

なぜcuDNNのConvolutionは高速なのか

より引用、 accessed 29 Jan 2017

  

CUDA や cuDNN には複数のバージョンが存在している。ライブラリ毎に対応するバージョンが異なっているため、自分の使いたいライブラリと、それに対応する CUDA, cuDNN のバージョンを確認しておく必要がある。

Pascal + CUDA 8 にて、FP16 での演算、ユニファイドメモリに対応。

 

 

 ネットを見ていますと、次のような記事がありました。

 

"最近リリースされた「TensorFlow」もCuda 7.0とCUDNN 6.5 V2が対応バージョン(最新バーションじゃ上手く動かなかった)なのでこの記事を見ればGPUの環境を整えることができますよ。TensorFlowはまだ勉強中です。"

ry0.github.io

accessed 29 Jan 2017

 

DNN ライブラリによって、CUDA、cuDNNのどのバージョンに対応しているかが異なるらしい。ので注意ですね。

 

 

2.TensorFlow

Google社の開発した(している)機械学習/DNNライブラリ。

www.tensorflow.org

C++言語pythonに対応。OS は Linux/Mac/Windows

特徴は

データフローグラフを使用したライブラリで、複雑なネットワークを分かりやすく記述できる ことらしい。

チュートリアルが素晴らしいとのこと。

比較的新しい割に、ネット上に情報が多い! さすがGoogle

 

以下引用

チュートリアル

各種チュートリアル用データセットが用意されていて、すぐに試せます。

MNIST:手書きの数字を判別
CNN:画像認識
Word2Vec:各単語の関係を学習
RNN:文章から次の単語予測
Seq2Seq Model:フランス語を英語に翻訳

引用終わり。

 

こちらから引用

www.ossnews.jp

より引用。accessed 29 Jan 2017

 

一通りのチュートリアルが揃ってますね。。。

 

 

実際に使ってみた方の講演スライド。

www.slideshare.net

実際の講演動画。

www.youtube.com

 

処理を可視化した、TensorBoard というのが素晴らしいみたいですね。

 

 

 

3.Theano

名前はよく見るが、その特徴はよく分からない。

(テアノ?)

比較的歴史があるらしい。情報は入手しやすい。

 

d.hatena.ne.jp

こちらでは、

 

"TensorFlow、Chainer、Caffe といった機械学習およびディープラーニングの代表的なライブラリ/フレームワーク3種"

 

と書いていて、DNN の有名ライブラリベスト3のうちの一つとされています。

 

 

ベストセラー本である

Python機械学習プログラミング」

「Python機械学習プログラミング」

 

でも、DNNライブラリとして取り上げられていました。

 

"Theanoはモントリオール大学のBengio教授の研究室で開発されています"

 

www.chino-js.com

 

qiita.com

よく分かりませんが、既に広く使われているモデルのようです(適当)。

 

 

4.CNTK

マイクロソフト社の開発したライブラリ。the microsoft CogNitive ToolKit

github.com

C++Python・.NET・BrainScriptをサポート。

複数のマシンの複数のGPUを利用可能で、ニューラルネットワークの訓練時の学習速度を著しく向上させることができる。という素晴らしいメリットがあるが、日本語の情報が極めて乏しいのが問題。

 

複数の PC、複数の GPU をうまく利用できるってのはめっちゃ魅力的!! しかしネット上に情報が乏しい。

 

Block Momentum, 1-bit SGD など、複数のコンピュータ、複数GPUでの学習をサポートする仕組みがあるらしい。

参考:Microsoftが公開したDeep LearningフレームワークCNTKの3つの特徴 - DeepAge

 

複数マシンを利用可能というのが素晴らしいですね。

 

が、マイクロソフトの最近の Windows 10 の動きを見ていると。手放しで信じて使って良いのか心配になります。10 になってバックグラウンドで勝手に通信、勝手にアップデートしていたり、便利ツールのpaintがなくなるとか。MS office でも、2010についていた画像ツール(簡単にトリミング、圧縮などができる、Powerpointの図ツールだけを取り出したようなソフト)が便利だったのですが、2013 や 2016 ではなくなってしまっているし。「あー便利だなー」となったところで梯子を外されないか、不安になりますね。

 

qiita.com

マイクロソフトらしくなく、イケてるって言う意見もあります。(上記qiita参照) 

 

 

こちらをご覧ください。2016年の、Deep Learning Advent Calender (クリスマス前の1ヶ月ほど、毎日みんなでネタを投下していくブログ的なもの)です。

 

それぞれの記事を見ると、どれもおもしろいのですが、その中の一つに、この CNTK が出てきます。「CNTK ってのは、ブログネタになってしまうほど、使われてないんだな・・・」という感想。だって「TensorFlow 使ってみました」なんて記事、ないですからね。

他の記事読むと、「TensorFlow使っていたけど遅かった」ですとか、TF は当たり前の用に扱われてますけど、CNTK は「ネタになる」というところでして。

 

qiita.com

 

 

 

5.CAFFE

カリフォルニア大学バークレー校にて開発されている。

C++で実装され、C++/Python/MATLABで使用できる。

「高速動作」「GPU対応」「洗練されたアーキテクチャ/ソースコード」「開発コミュニティが活発」などが特徴。

www.ossnews.jp

より引用、29 Jan 2017

 

ネットの記事見てて、全体に評価が高い印象です。

 

一例ですが、

 

"代表的なフレームワークには、

Caffe
theano/Pylearn2
Cuda-convnet2
Torch7
などがあります。この中でも最速でありかつ最も活発に開発が行われているのがCaffeです。"

qiita.com

より引用、accessed 29 Jan 2017

 

高速なのは素晴らしいですが、インストールが難しいという話もあります。

d.hatena.ne.jp

 

 

学習速度が速いのは魅力的です。ただし私の目的では、基本的に多施設共同研究となり、中央にデータを集めて中央で解析することになると思います。

おそらく参加施設様にマシーン/GPUの参加も募り、分散処理で学習すると思いますので、単純な速さよりも、分散処理への優れた対応が重要のような気がします。

そうすると CNTK なのですが。。。

 

 

6.Chainer

  Chainer: A flexible framework for neural networks

  Prefered Networks社が開発

 ☆日本製☆ と言うだけで親近感が湧いてくるライブラリ

 

www.slideshare.net

 

"既存の実装のは、独自のミニ言語に対するインタープリタを実装しているようなもの" らしいですが、Chainer では Python の標準の機能?(+Numpy?)を使って実装している様子。

 

Cython も使うようですが、そういう「独自のライブラリ」ではなく、「メジャーなライブラリ」を使う、なるべくシンプルに実装しているらしいところには好感。

 

Deep Learning のフレームワーク Chainer を公開しました | Preferred Research

accessed 29 Jan 2017

 

  1. 好きですけど、実際触って、使いやすいかは別問題なので、確認する必要がありますね。

 

次期モデルで高速化するというニュースあり!

 

"現在のChainerは、マルチノード(複数サーバー)での学習に対応にしていない"

"この分散バージョンのChainerでは設定を変更するだけで、マルチノード環境やマルチGPU環境に対応"

"32ノード/128GPUの環境で画像認識を学習。1ノード/1GPUの環境で20日以上かかっていた学習が、4.4時間で完了"

itpro.nikkeibp.co.jp

accessed Jan 29 2017

 

 

さて、目的に応じて、適切なライブラリを使うことが重要と思われます。

医用画像と言っても単純レントゲンと超音波、CT、MRI核医学、どれも特徴があり、異なっています。

 

特にニーズが高いのは、単純レントゲンと超音波、CT、MRIでしょう。

 

2D画像のレントゲンと超音波、3D画像のCTとMRIで、実装が異なるでしょう。

 

同じ2Dでも、数十ミリ秒単位で速度が必要な超音波と、数10秒が許容できるレントゲンは異なっています。例えばレントゲン、撮影装置に DNN を組み込めれば、ほぼリアルタイムで診療支援が可能なはず。現像の際に使う据え置き装置に組み込む感じですね。

一方、USは基本的にポータブル装置のため、ハードウェア的な制限が大きいでしょう。レントゲン/CT/MRIではクラウドに投げるというウルトラCがありますが、USはリアルタイム性が強み。クラウドに投げるのは無理でしょうな。。。これも将来的には装置に組み込み、危険な部位を指摘してもらえれば素晴らしいですね。比較的内部構造が単純で、早期発見による恩恵が極めて多きい、乳腺USなどがターゲットとして良いだろうなと。

 

3Dでは、もともと3次元のデータ量があるCTで、時間軸方向の変化(比較、ダイナミック造影)と更に2つの次元の情報があり更に複雑となります。MRI、CTの5次元に加え、同時撮影された異なるコントラスト画像(+1次元)があり、6次元で、もっと複雑です。CT・MRIでは、さらに臨床情報も加える(CT:6次元、MRI:7次元)ことで高精度になるでしょうが、それをどのように入力するかが課題。

 

これだけ大量の情報を持つ DNN をトレーニングするには、膨大な医用情報が必要であり、単一の医療機関や、単一の医局で行うことは恐らく不可能です。ネット上の文献から学習したりできれば良いのですが、私の脳みそでは実装方法が思いつかず。多施設共同研究で画像を集める(物理で殴る)しかないと思いますが、それにしたって膨大な情報量です。はたして、職があるうちに収集、実装、学習できるか・・・

 

しかし DNN による画像診断が普及すれば、その恩恵は計り知れません。

ので夢を見て頑張ろうとは思います。

pydicom 1.0 のインストール。

Python

pydicom 1.0.0a1 を github から DL してインストールするまでの記録です。

a というのは α 版 ということのようです。

「α版」が何を意味するかは、以下のWikipediaを御覧ください。

アルファ版 - Wikipedia

したがって、普通の人はインストールすべきでないでしょう。

 

pip でインストールする場合、 安定版である、0.9.9 がインストールされます。

Python 3 + Pydicom 0.9 を使用しているブログを見た記憶があるので、(公式には pydicom のサポートは python 2系に限られるにも関わらず)まずは pydicom 0.9.9 を使うのが良いと思います。

 

 

・・・・・・・・・・・・・・・・・・・・・・・・・・

 

pydicom 1.0が出てました。

pydicom documentation — pydicom 1.0a documentation

 

公式ドキュメントも!

https://media.readthedocs.org/pdf/pydicom/latest/pydicom.pdf

発行日:Jan 27, 2017!!

 

できたてホヤホヤ!!

 

 

"""1.3.1 Prerequisites
python 2.6, 2.7, 3.3 or later"""

 

 

python 3.3 or later !!! 

 

 

pydicom 0.9.9では、python 2系にしか対応していなかったのですが。

xd-lab.net

# 約1年前の記事。この時点で Python 2.7 にも

 対応していなかったという。。

# 急ピッチで開発が続いていることが分かります。

 

 

1.0で3系にも対応した様子。

python3 しか知らない私は、ようやく使える(かもしれない)。。。

 

 

 

 

 

 

Deep neural network は python で構築する予定。

Preparation, neural network, post-processing 全てを python 上で実装できれば。

ただし pydicom は、「jpeg などで圧縮された画像は上手く扱えない」とある。

 

公式ドキュメント

"""One limitation of pydicom: compressed pixel data (e.g. JPEG) cannot be altered in an intelligent way as it can be for uncompressed pixels"""

 

Dicom 画像も jpeg2000 で圧縮されていたりするので、結局 DCMTK

dicom.offis.de

を使う必要があるかもしれないが・・・

 

(前処理をどうするかは議論のある所でしょうね。)

(幾つかアイデアはありますが、どうすれば実装できるのか・・・?)

 

 

 

 

 

 

早速インストールしてみます。

 

Win10 PC

管理者権限でコマンドプロンプト

 

>pip install pydicom

 

//////////////////////////////////////////////////////////////////////////////////////////////////////

Collecting pydicom
Downloading pydicom-0.9.9.tar.gz (422kB)
100% |################################| 430kB 1.3MB/s

////////////////////////////////////////////////////////////////////////////////////////////////////// 

 

ん・・・ 0.9.9 だと・・・?

 

>pip install -U pydicom #アップデートする

>pip freeze

 

//////////////////////////////////////////////////////////////////////////////////////////////////////

...

...

...

pycurl==7.43.0
pydicom==0.9.9
pyflakes==1.3.0

...

...

...

//////////////////////////////////////////////////////////////////////////////////////////////////////

 

pydicom==0.9.9 !!!

 

フム・・・

 

 

 

> python

 

//////////////////////////////////////////////////////////////////////////////////////////////////////

Python 3.5.2 |Anaconda custom (64-bit)| (default, Jul 5 2016, 11:41:13) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.

//////////////////////////////////////////////////////////////////////////////////////////////////////

 

>>>  import pydicom  

# pydicom 1.0 なら、これでインポートできるはず。

 

//////////////////////////////////////////////////////////////////////////////////////////////////////

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'pydicom'

//////////////////////////////////////////////////////////////////////////////////////////////////////

# エラー!!

 

>>> import dicom  

# pydicom 0.9 なら、これでインポートできるはず。

 

>>> 

 

# エラーが出ない!!! oh...0.9.9!!!

# 他のインストール方法でなんとかならないか。

 

> pip uninstall pydicom

> y

 

//////////////////////////////////////////////////////////////////////////////////////////////////////

Successfully uninstalled pydicom-0.9.9

//////////////////////////////////////////////////////////////////////////////////////////////////////

 

というわけで、pip でインストール出来ないので、他の方法を使います。

 

 

 

 

 

 

 

 

 

・・・しばらく ネットの海を漂流・・・

 

 

 

 

 

 

 

 

 

 

githubからダウンロードできそうです。

https://github.com/darcymason/pydicom/archive/master.zip

バージョン書いてないのが気になりますが・・・

公式ドキュメント通りにインストールしてみます。

 

zipファイルを解凍

管理者権限でコマンドプロンプト

cd/dir を駆使して展開したフォルダに移動。

 

> dir

setup.py

を確認。さて。

 

> python setup.py install

//////////////////////////////////////////////////////////////////////////////////////////////////////

...

...

Installed c:\program files\anaconda3\lib\site-packages\pydicom-1.0.0a1-py3.5.egg
Processing dependencies for pydicom==1.0.0a1
Finished processing dependencies for pydicom==1.0.0a1

//////////////////////////////////////////////////////////////////////////////////////////////////////

 

 

おぉ!!

 

インストールできてしまった。

 

念のため

> pip freeze

 

//////////////////////////////////////////////////////////////////////////////////////////////////////

...

...

...

pycurl==7.43.0
pydicom==1.0.0a1
pyflakes==1.3.0

...

...

...

//////////////////////////////////////////////////////////////////////////////////////////////////////

 

おぉ!!

pip で認識されているみたいなので、いざとなったら pip でアンインストールもできる(といいなぁ)

 

 

さて、いざ。

 

> python

>>> import pydicom   # 1.0 ならエラーが出ない

>>>

 

# エラーが出ない!!

 

 

幸せ・・・。

お疲れ様でした。

Theano on Python3 (Anaconda) in Win10

DNN Python Win10/Bash

ディープラーニングのライブラリである Theano を Anaconda(Python3.5.2, Win10)にインストールした。PC は Lenovo Thinkpad T460(GPUなし) Win 10。

 

コマンドプロンプトを管理者権限で起動。

`Theano をインストールする。

 

[Win] + x, a

> conda install Theano

 

時間は多少かかるが、あっけなくインストール完了。

(当初、パイソンを起動した後に

>>> conda install Theano

でインストールできず、5分くらい無駄にしました。コマンドプロンプト上でインストールするんですね!)

 

コマンドプロンプトを終了。再起動。

 

> exit

[Win] + x, c

 

パイソンを起動した後、Theanoをインポートする。

 

> python

>>> import theano

 

エラーが出る

 

WARNING (theano.configdefaults): g++ not detected ! Theano will be unable to execute optimized C-implementations (for both CPU and GPU) and will default to Pythonimplementations. Performance will be severely degraded

 

C言語コンパイラが無いと怒っているのか。Googる。

MinGWというソフトをインストールすれば良いそうで

Windows 7にMinGWをインストールする(mingw-get-inst使用) - Symfoware

source forge というサイトからインストーラー使ってインストールするが

MinGW - Minimalist GNU for Windows download | SourceForge.net

 

> python

>>> import theano

 

同じエラーが出る。

WARNING (theano.configdefaults): g++ not detected ! Theano will be unable to execute optimized C-implementations (for both CPU and GPU) and will default to Pythonimplementations. Performance will be severely degraded

 

別サイト参照

may46onez.hatenablog.com

 

コマンドプロンプトからインストールすれば良いらしい。

コマンドプロンプトを起動。

 

> conda install mingw libpython

 

cmdを再起動して

[Win] + x, c

 

> python

>>> import theano

 

エラーが出ない。

 

本日はここまで。

 

 

 

Rstudio日本語が文字化けした時

R

File

Reopen with Enchoding

(Alt + F -> E)

 で適当なのを選択してOKをclick。

 自分の場合は UTF-8 -> SHIFT-JIS に変更して改善

よく使うBash, cp -r / rsync -ahvc

UNIX/Linux/Bash

こりゃ使うなぁ と思ったコードを書き留めていく。

 

bash再起動

source ~/.bashrc

 

 

研究データをコピーする。

for x in [ID] #研究で使うID番号

do

mkdir #コピー先のディレクトリを作る

cp -r  $x/コピー元のディレクトリ [コピー先のディレクトリ]

done

 

 

※T1WI、T2WIとか複数のディレクトリをコピーする際、for loop を2重、3重にするとコピーできない。

for x in [ID]

do

  for y in T1WI T2WI DWI

  do

 

みたいに上手く回すのは自分には困難(やり方がわからない)。

 かっこ悪いけど

for x in [ID]

do

mkdir

cp -r $x/ディレクトリ名/T1WI* コピー先のディレクト

cp -r $x/ディレクトリ名/T2WI* コピー先のディレクト

cp -r $x/ディレクトリ名/DWI* コピー先のディレクト

cp -r $x/ディレクトリ名/ADC* コピー先のディレクト

 

 の方が確実。

 

※cp -r の代わりに、rsync -ahvc も可

 違いはよくわからないけど、rsync -ahvc だと、「今どのフォルダで作業しているか」を表示してくれる。

 ahvc は「あーん(ah)ばかーん(vc)」と覚えています。

AFNI を Windows10 にインストールする。

Win10/Bash 日記

AFNI を Windows 10 にインストールできました。以前は一部パッケージがインストールできませんでしたが、ようやく解消。

備忘録も兼ねて記載します。

pmonty.hatenablog.com

Bash on Ubuntu on Windows を使わず、Cygwin を使っていれば、とっくにインストールできていたのかもしれませんが・・・ Cygwin を使ったことがないため、ご存じの方がいたら教えてください。 

 

 

afni は強力な画像解析ソフトウェア。

ROI/VOI 書きや pixel-by-pixel の信号強度取得、複数画像の registration、複数画像の計算(add/subなど)、gaussianフィルター、その他、様々な機能を有しており、医用画像解析に極めて有用です。

 

なお、もともとは fMRI 解析ソフト。

 

インストール方法はこちら。

1.1.2. The essential system setup for: Ubuntu Linux — AFNI, SUMA and FATCAT: v16.3.09

Ubuntu14 ではコピペでインストール可能ですが、Bash on Ubuntu on Windows では、コピペするだけではエラーが出てしまいます(ちなみに、Ubuntu16 へのインストールを試したところ、一部エラーがでましたので、まだ version 14 を使う方が)。

 

注意点は

 ※Windows10にインストールされる bash は、Ubuntu 14 版

 ※tcsh がインストール出来ないので、zsh で代用する。

です。

 

まず、必要なソフトをインストールします。tcshがインストール出来ないので、代わりに zsh をインストールします。

 

sudo apt-get install -y zsh libxp6 xfonts-base python-qt4             
                        libmotif4 libmotif-dev motif-clients           
                        gsl-bin netpbm gnome-tweak-tool libjpeg62
sudo apt-get update

 

また、次のページを参考に、Xming をインストールします。

www.nemotos.net

上記のページでは、FSL のインストール手順が詳細に解説されています。FSL も使う可能性があるので、上記ページに従ってインストールしておくと良いです。

ちなみに、今後、Bash on Ubuntu on Windows のアップグレード(Ubuntu 14 から 16 へ)が予定されています。 Ubuntu 16 にインストールする場合は libmotif4 がインストールできません。代わりに libmotif-common でもインストールしておけばうまくいくだろうと思います。

 

sudo apt-get install -y zsh xfonts-base python-qt4                    \
                        libmotif-common libmotif-dev motif-clients           \
                        gsl-bin netpbm gnome-tweak-tool libjpeg62
sudo apt-get update
sudo ln -s /usr/lib/x86_64-linux-gnu/libgsl.so /usr/lib/libgsl.so.0
sudo dpkg -i http://mirrors.kernel.org/ubuntu/pool/main/libx/libxp/libxp6_1.0.2-2_amd64.deb
sudo apt-get install -f

 

次に、AFNI をインストールします。tcsh を使えないので、代わりに zsh を使います。

zsh @update.afni.binaries -package linux_openmp_64 -do_extras

ここでリブートが必要ですが、rebootコマンドを受け付けてくれないので、exitで代用します。

exit
# bash からログアウトします。
exit
# コマンドプロンプトからログアウトします。

[Windowsキー]+x, c
# コマンドプロンプトを起動します。
bash
# Bash on Ubuntu on Windows を起動します。

次に R のインストールです。tcshzsh に変えます。

export R_LIBS=$HOME/R
mkdir $R_LIBS
echo 'export R_LIBS=$HOME/R' >> ~/.bashrc
curl -O https://afni.nimh.nih.gov/pub/dist/src/scripts_src/@add_rcran_ubuntu.tcsh
sudo zsh @add_rcran_ubuntu.tcsh
rPkgsInstall -pkgs ALL

しかし、インストール出来ませんでしたので、

sudo apt-get update
rPkgsInstall - pkgs ALL
試したところ、無事インストールできました(何が問題だったのか分かりません)。

 

AFNI、SUMA のプロファイルをインストールします。

cp $HOME/abin/AFNI.afnirc $HOME/.afnirc
suma -update_env

 

なお、Ubuntu 16 では、libxp6がインストールされていないため、suma~ のコマンドでエラーが出ます。このため、libxpをインストールしておきます。

Ubuntu – パッケージのダウンロードに関する選択 -- libxp6_1.0.2-1ubuntu1_amd64.deb

からダウンロード。

cd

cd /Downloads

sudo dpkg -i libxp6 [Tabキー]

にてインストール

その後、

suma -update_env

にてsumaプロファイルをインストールします。

 

 

最後に、無事にインストールできているかシステムチェックをします。

afni_system_check.py -check_all

注意点ですが、このシステムチェックは python 2 系を使用しています(デフォルトでインストールされています)。もし bashpython 3系 をインストールしていますと、このスクリプトは走りません。

 

上記方法で、Ubuntu 16 で AFNI は一応動きはしますが、一部のパッケージ(3dSkullStripなど)のインストールには失敗してしまいます。

私も試行錯誤中ですので、エラーが出なくなったらご報告いたします。

 

python 3 をインストールしていたら、どうすればいいでしょうか?

スクリプトをちょこっと書き換えれば、走ります。

方法は以下の通り。

 

 nano ~/abin/afni_system_check.py

とすると、エディターが立ち上がりますので、一行目の

#!/usr/bin/env python

#!/usr/bin/env python2

に書き換えます。

そして Ctrl + X → Y → Enter

と押して上書き保存します。

 

なお、bash 初期化ついて。

問題が起きた時は初期化して、再インストールが確実です。

「プログラムの追加と削除」からアンインストールすると不具合が出て bash が使えなくなるという報告がありますので、コマンドプロンプトから行ってください。

blog.sfpgmr.net

アンインストールと再インストールは、コマンドプロンプトから。詳しくは下記サイト。

www.atmarkit.co.jp

 

以上です。

 

・・・・・・・

追記

 

来春の Windows 10 のアップデートで、Bash on Ubuntu on Windows が 16.04.1 にアップグレードされるようです。 

qiita.com

えぇぇぇぇぇぇ・・・・

14 は LTS で、まだサポート中じゃないですか・・・

 

や め て く れ ・・・

 

Ubuntu で苦しんだ日記

Win10/Bash 日記

本日の work

 

ゼロから作る Deep Learning

第3章

 mnist を使った機械学習

 

うまくいかない。

 

書いてあるコードを Win10, Python3.5 in Anaconda に打ち込んで、対話的に行う。

p76-77 のコードを実行すると、正診率が返るはず。

 

しかし、何も出てこない。

 

def sigmoid(x): とか、必要と思われるコードを追加してもダメ。

 

Win10環境が悪いのかと、

 Ubuntu 16 on VMware Player

 Ubuntu 14 on VMware Player

で試すが、

 

そもそもこれらには Anaconda のインストールすらできていなかったことに気づく!

何度かインストールし直し、Path を通してもダメ。

 

$ conda -V

 

に、そんなコマンドはありません って返ってくる。

oh...

 

OS から入れ直しますか。

 

 

Ubuntu14 EN 入れ直して Mozc を入れようと・・・

 Mozc がインストールされてるのに、日本語入力できなかったり、

 

Ubuntu 14 日本語remix入れても日本語入力できなかったり。

 

もちろん Anaconda のインストールもうまくいかない。

 

踏んだり蹴ったり。

 

Ubuntu 16 で、ひょっとして、もともと入ってる Python3 が、anaconda のインストールを邪魔しているのかなぁと、試しに Python 3 を削除。sudo apt-get autoremove も。

再起動

 

・・・

 

サイドバーがない。。。

 

Ctrl + Alt + T

 

端末起動しない。。。

 

で、終了。

 

仮想ファイルを削除、backup HDD から持ってきて復活させて終了。

 

 

・・・

 

デスクトップ PC を買って、Ubuntu 入れようと計画してますけど。

こんなんで、ディープラーニングまで行けるのか不安です。。。

 

なんだかんだ言っても、やっぱ Windows すげえわ!

 インストールで失敗することはまずないし。

 アンインストールも簡単。

 TensorFlow も Win 対応しましたし、Win10 頑張るのも悪くないかも・・・

 

そういえば最近、VMware の update が来ましたが、それが関係してんのかなぁ

 

以前、VirtualBoxを試していた時、Chromeがインストール出来ないのでヤになって VMware Player にしたわけです。といっても、古い version でも Anaconda, インストールできてなかったわけなので、望み薄。

 

・・・

 

フト思い出し、

書籍に付属しているコードを、cmd からスクリプトとして呼び出すと、

無事、正診率が返る。

 

ううむ、何が違うのだ・・・

 

次はコード1行ずつ、Jupyter Notebook で試してみるか・・・

 

 

CUDA 対応 GPU の評価

パソコン選び/GPU選び

将来ディープラーニングをやりたいということで、それ用のPCを物色しています。

 

GPUを作っているメーカーは、

 nvidia

 AMD

が有名ですが、

 

GPUを使ったディープラーニングということになると、GPGPUに対応したソフトウェア、CUDAを出している nvidia 一択になります。

 

で、「初めて」なので、当然エントリー価格帯から選ぶのですが、

どれを選ぶべきか・・・?

 

1.

 汎用性のあるモバイル?

 コストパフォーマンスの良いデスクトップ?

 

2.

 ゲームに強い geforce

 ワークステーション向けGPUである quadro

 

と、大きく分けて4種類から選ぶことになります。

 

で、下記サイトがGPUの性能比較に役立ちます。

developer.nvidia.com

 しかしまぁ、値段が同じなら、geforceでもquadroでも、あまり変わらない印象です。

 

私自身は

 デスクトップ向け

 Quadro

にしようと思っています。

 

デスクトップでは HDD/SDD を複数載せられ、Windows/Linux などのマルチブート、世代管理が楽ですし、データも 3.5inch HDD で大量保存できます(ノートPCでもHDD/SSD複数載せられるものもあるにはあります(Xiomi mi air, Thinkpad P50, P70など))

自宅に置くか、研究室に置くかは未定ですが、どちらにせよリモートで操作すればいいかと思いました。機械学習では、主に CUI を使うでしょうから。

さて、私のやりたい 「医用画像を用いた」「機械学習」では、学習の際に大容量のRAM(GPUのRAM)が必要になる可能性があります。将来的に RAM を増やせないノートに対し、デスクトップでは、GPU 追加(2枚刺し)やGPU 載せ替えで 、比較的安価に RAM を増やすことができます。

 

エントリー価格帯(<5万円と想定)で見てみると、RAM は 1G~4G 程度。

値段と RAM の量は、概ね比例しているようです。

 

今のところは、

 CPU はスピードよりも省電力重視で core-i5

 GPU は、メモリー量重視で RAM: 4GB 以上の quadro

で組もうかと、を考えております。

 

今月はクリスマスで出費が多いので、カード限度額をにらみながら、いつ注文するか思案中です。

レッツノート SX2 の メモリー増設 16GB

Let's Note 日記

レッツノートはパナが出しているビジネスマン御用達のPC

panasonic.jp

 

 

勝間和代氏が愛用していることでも知られる。

panasonic.jp

 

別にカツマーって訳でもないが、

 W5, W7, F9, SX2, B11, LX3, LX5

と都合7台ほど触ってきました(家族用、業務用含め)。

 

自分用は

    W5, F9, SX2 の3台

 

 

軽くて光学ドライブがあるのは便利。

医用画像を取り出す際は DVD 必要なため。

 

 

レッツノートは、メーカー保証以上にモリーを積めたりします。

画像解析では メモリーは最大まで積んでおきたい。

 

例えば、

 W7 店頭モデル:公称 1.5GBま で。実際は 4GB まで。

 SX2 店頭モデル:公称 8GB まで。実際は 16GB まで。

 

上記まで積むには、メーカー保証を切る必要がありますのでご注意。

SXシリーズで、詳しいやり方はこちらです。

bunkaikoubou.jp