software_development」カテゴリーアーカイブ

機械学習名古屋 第4回勉強会(ディープラーニングその2)に行ってきた

機械学習名古屋 第4回勉強会(ディープラーニングその2)に行ってきた。
RIMG0006
勉強会の概要
1. 「深層学習」読書会
 教本として、「深層学習」の6章を読む。 
2. TensorFlow ミニ・ハンズオン
 TensorFlowの公式チュートリアルのMNIST For ML Beginnersを少し変えて、
 畳み込みニューラルネットワーク(CNN)をTensorFlowで作って解いてみる。
 → ハンズオン資料

という内容だった。
講師は@antimon2さん。
続きを読む

機械学習用のTensorFlowというソフトをMac(OS X El Capitan)に入れた

機械学習用のTensorFlowというソフトをMac(OS X 10.11 El Capitan)に入れた。

このあいだUbuntuのノートPCに入れていたのだけど、そのノートPCのOSを入れ替え作業をするので、その間に代わりに使うため今度はMacBook Airに入れることにした。

インストール方法は、公式ページに書いてある。
(TensorFlowのバージョンは、現在0.8。今後バージョンが上がるとインストール手順も変わってしまうので注意。)
TensorFlow — Download and Setup
続きを読む

機械学習名古屋 第3回勉強会(ディープラーニングその1)に行ってきた

機械学習名古屋 第3回勉強会(ディープラーニングその1)に行ってきた。
20160416_141754
勉強会の概要
1. 「深層学習」読書会
 教本として、「深層学習」の最初から3章までを読む。 
2. TensorFlow ミニ・ハンズオン
 TensorFlowの公式チュートリアルのMNIST For ML Beginnersを少し変えて、
 3層のニューラルネットワークをTensorFlowで作って解いてみる。
 → ハンズオン資料
3. Julia紹介
 → Juliaの紹介
という内容だった。
講師は@antimon2さん。
続きを読む

機械学習用のTensorFlowというソフトをPC(Ubuntu)に入れた

機械学習用のTensorFlowというソフトをPC(Ubuntu)に入れた。

TensorFlowは、Googleが作っていて、Python言語で使う拡張ライブラリとして提供されている。
Windows版Pythonで動く物は提供されていないので、UbuntuのPCにインストールする。
自分のPCのUbuntuのバージョンは64bit版の14.04で、そこに入っているpythonのバージョンは2.7だ。

インストール方法は、公式ページに書いてある。
(TensorFlowのバージョンは、現在0.8。今後バージョンが上がるとインストール手順も変わってしまうので注意。)
TensorFlow — Download and Setup
続きを読む

機械学習の勉強を始める前に

機械学習の勉強を始める前に、自分の昔(30年くらい前)の知識の整理をする。

大学の研究室で、同じ研究室の同級生がニューロを卒業研究で研究していた。
それを少し聞いただけなので、知識としては古いし、正確には分かってないと思う。

まず、ニューロ(ニューロコンピュータ、ニューラルネットワーク)は、脳細胞(ニューロン)の働きを模した素子を多数ネットワーク状に結合して演算する演算器である。
人間の脳のように(?)学習させることにより、学習させたとおりの演算結果を出力するようにトレーニングすることができる。

素子のニューロンは、こんな感じに細胞体本体(soma)とシッポ状の部分(axon)からできている。
ニューロン 画像 – Google検索

image1
1つのニューロン素子は、近傍の他の複数のニューロン素子にくっついている。

脳全体で3次元的にニューロン素子が組み合わさってネットワークを形成している。

これを数学的なモデルで表して、コンピュータでシミュレーションする。
続きを読む

LLVM-IR(LLVM中間コード)用コンパイラの改良を考え中

LLVM-IR(LLVM中間コード)用コンパイラの改良を考え中だ。

・C言語で書いているのを、C++で書き直す?
 yaccないしbisonを使って作っていので、そのためC言語で書いている。
 うまくラッパーとか作ってC++で書き直したらどうだろうか?
 既存のそういうラッパーもありそうなので、それを流用すればいいのかもしれない。
 うまくオブジェクト/クラスに切り分けて作るにはどうするのかちょっと悩む。

・yacc(bision)だけではなく、lex(flex)を使ってみる?
 上記のC++化にも絡んでくる話だが、基本的にはC言語でのコンパイラ開発用に作られたツールなので、C++化しようとすると使いにくい。

・LLVM-IR用コンパイラ以外も統合する?
 以前作ったJavaバイトコード出力版のものや、.NET中間言語MSIL(CIL)出力版のものがあり、コードの半分くらいは共通になっている。
 統合して、1つのコンパイラで3種類に対応という形にしてしまったほうがいいのかもしれない。
 少なくとも、共通部分は整理して分離したほうがよさそうだ。

LLVM-IR(LLVM中間コード)用コンパイラの作り方 その11

前回の続き

配列変数の実装について、書くのを忘れていた。

10 DIM A(10)
みたいにTinyBasicで配列宣言をしたときに、LLVM-IRでそれに対応したコードを生成する。
通常の変数の場合は、最初に出現した時に生成するのだが、配列はDIM文で宣言が必要という仕様だ。

  %_A0 = alloca [11 x i32], align 4

というように11個の32bit整数のメモリ空間を割り当てる。
10個で無いのは、A(0)~A(10)まで11個だからだ。
続きを読む