Converg.

ものづくり関係の備忘録

Windows10設定(sublime text 3,bashrc,mintty)

今回は,Sublime Text 3,bash,minttyの簡単な設定を記します.


 ① テキストエディタをインストール
 ② テキストエディタを用いて設定ファイル
   (.bashrc,.bash_profile,.minttyrc)を作成・編集する

以上を行うことが目的です.



Sublime Text 3のダウンロードとインストール


Sublime Text 3はテキストエディタで使いやすいので今はこれを使っています.
なお,OS XのほうではEmacsを使っていますがそちらもこれに変えるかもしれません.

下記サイトより日本語化までできますので,詳細説明は譲ります.
『初心者向け』 Sublime Text 3 導入と日本語化について - NAVER まとめ

上記にしたがってエディタをインストールしたのち,最低限次のパッケージがあるといいでしょう.

 ・Japanize
  ...日本語化パッケージ
 ・ConvertToUTF8
  ...文字コードUTF-8に変換してくれるパッケージ

その他のテーマなど,詳しい設定をする機会は改めて設けます.


Sublime Text 3をMinttyから起動する


Sublime Text 3の実行ファイルが下記にあるとして説明を続けます.

 C:\Program Files\Sublime Text 3\sublime_text.exe

Minttyを起動後,ホームディレクトリにcommand用のディレクトリを作成します.
このディレクトリにSublime Text 3を起動するコマンド subl を作ることにします.

 $ mkdir command

まずは,普通にSublime Text3を起動し,sublという名前のファイルを新規作成します.
ファイルの内容は次のようにして,commandディレクトリの中に置きます.

#! /bin/sh

/c/Program\ Files/Sublime\ Text\ 3/sublime_text $1 &

これで,sublと打てばテキストエディタが起動しますが,現時点ではそれはこのディレクトリ内にいるときだけです.

したがって,次はどこでこのコマンドを打っても起動するようにPATHを通します.

そのために,ホームディレクトリに.bashrc,.bash_profileという設定ファイルを作成します,

.bashrcの作成


Mintty起動後,次のように.bashrcを作成します.

 $ ~/command/subl ~/.bashrc

.bashrcの中身は次のようにします.

#--- PS1
export PS1="\033[32m\]\u@\h \[\033[33m\W\033[0m\] $ "
#--- PATH4command
export PATH=$HOME/command:$PATH

#--- alias
alias cdd='cd $HOME/Desktop'
alias ls='ls --show-control-chars --color=auto' 


上記ファイルを読み込むことでsublコマンドが使えるようになります.ついでにaliasの設定をしています.

 $ source ~/.bashrc

毎回読み込むためのコマンドを打つのは面倒なので,Mintty起動時に読み込んでくれるように,つぎは.bash_profileを作成します.


.bash_profileの作成

ホームディレクトリ以下に作成します.

 $ subl ~/.bash_profile


中身は次のとおりです.

# .bash_profile
# source .bashrc
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

これでMintty初回起動時には設定ファイルが読み込まれるようになります.

最後にMinttyの設定をして終わります.


.minttyrcの作成

ホームディレクトリに作成します.

 $ subl ~/.minttyrc

私の場合は中身は次のように設定しました.

BoldAsFont=yes
Locale=ja_JP
Columns=90
Rows=30
Font=Consolas
FontHeight=10
BoldAsColour=yes
Transparency=high
OpaqueWhenFocused=no
CursorType=block
CursorColour=255,255,0
IMECursorColour=255,0,0
ForegroundColour=243,243,243
Term=xterm-256color
BackgroundColour=0,0,0

Windows10設定(MinGW,Mintty)

先日はChocolateyの導入について簡単に示しましたが,結局筆者はプログラミング環境をMinGW(Minimalist GNU for Windows)とMinttyを用いて整えています。

Windowsで使用しているテキストエディタSublime Text 3ですが,
それはまた後日。


MinGWのダウンロードとインストール

MinGWを下記よりmingw-get-setup.exeをダウンロードしてきて,
インストールを開始しましょう。sourceforge.net


インストールまでの詳しい流れは下記サイトが分かりやすかったので,下記に譲ります。
MinGW(gcc) の Windows へのインストールと使い方 | プログラマーズ雑記帳



なお,パッケージとしては,私はC,C++FortranObjective-Cコンパイラーを入れています。数値計算等チャレンジしてみたい方は是非Fortranコンパイラ(gfortran)を入れておくと良いかもしれません。



さて,以降ではMinGWがCドライブ直下にインストールされたものとして説明を続けます。
(念のため環境変数の確認から)


環境変数の設定


ここではCドライブ直下にMinGWをインストールしたとして説明を書きます。要は下記のようにMinGWというフォルダが存在する状態です。

  C:\MinGW


[ システム ] → [ システムの詳細設定 ] → 詳細設定タブ下部の [ 環境変数 ] より,PATHという変数名の環境変数を新規作成します。

 ・変数名: PATH
 ・変数値: C:\MinGW\bin;C:\MinGW\msys\1.0\bin;


MinGWをインストールしたディレクトリをよく確認して環境変数を作成ください。
ここが適切に設定できていないと,以降のコマンドを実行時,command not found.となるでしょう。



Minttyのインストール

環境変数を設定後,Minttyをインストールします。下記場所のbatファイルをダブルクリックして,MinGW Shellを起動します。

 C:\MinGW\msys\1.0\msys.bat


起動後,環境変数が適切に設定されていれば,mingw-getコマンドを使用できますので,更新してアップデートしたのち,minttyを入れてしまいましょう。

$ mingw-get update
$ mingw-get upgrade
$ mingw-get install mintty 


mintty.exe は C:\MinGW\msys\1.0\bin 以下にインストールされていると思います。心配であればコマンドプロンプト等で確認してみましょう。

> where mintty.exe


mintty.exeの場所を確認したのち,ショートカットを作りましょう。
仮にデスクトップ上に作るとすると,

[ 右クリック ] → [ 新規作成 ] → [ ショートカット ]

項目の場所を入力してください(T):

C:\MinGW\msys\1.0\bin\mintty.exe /bin/env HOME=/c/Users/(あなたのユーザー名)
 /bin/bash --login


上記のようにショートカットを作成ください。上記の改行部には半角スペースをお忘れずに。


さて,これでMinttyを起動できるようになりました。
lsコマンドで日本語が文字化けしますが,これは文字コードが原因であり,下記オプションで解決します。

$ ls --show-control-chars


しかしながら,上記コマンドをわざわざ毎回入力したいでしょうか? ls と打てば上記を実行したことにしたいですよね。

実は,そういった設定は alias と呼ばれるものを用いれば可能で,次回は下記を掲載予定です。

 ・bashの設定: .bash_profile 及び .bashrc
 ・Minttyの設定: .minttyrc

Windows10設定(Chocolatey)

パッケージ管理システム Chocolateyの準備

Windowsでのパッケージ管理システムとして,Cholocateyを使用するときの設定をまとめます。

 ・OS XMacports,Homebrew
 ・Linux:apt-getコマンド

など,それぞれのOSでパッケージ管理システムがあります。
今回は,Cygwin等異なるOS環境を導入して,プログラミング環境を作ることを目的としません。

まずは,コマンドプロンプトを管理者権限で実行して,下記のコマンドを実行します。
実行ポリシーには注意してください。改行部分は間に半角スペースをお忘れずに。

> @powershell -NoProfile -ExecutionPolicy RemoteSigned -Command 
  "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))"
  && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin

正常にインストールされれば,下記コマンドでインストールされているか確認できます。

> clist -lo

無事インストールされたことを確認したら,念のため,Chocolatey用の環境変数をシステムに確実に反映させたいので,再起動しましょう。

下記要領でGUIがインストールできますが,使い勝手が悪すぎたので,お勧めしません。
さて,再起動が完了したところで,CUIでの操作に慣れてない方は,せっかくなのでGUIを入れてみましょう。CUIに慣れてる方は,下記にChocolateyで使用できるコマンドがすべて載ってますのでご参考に。github.com
先ほどと同様に,コマンドプロンプトを管理者権限で実行して,下記コマンドによりGUIをインストールします。

> cinst chocolateygui

途中,スクリプトを走らせていいか聞かれる場合がありますが,yesと打ってEnterを押しインストールを続行しましょう。
無事インストールされたら,Windows10では画像のように最近追加されたものの所にアイコンが出ますので,ショートカットを作成するか,タスクバーにでもピン留めしておきます。

深層学習 Day 1

やっとディープラーニング(深層学習)について取り組めます。
小学生の頃に完全なる人工知能を夢見て,色々想像してたのが懐かしいです。

実行環境構築

OS X上かつMacportsが慣れているのでその条件で構築します。
以下,Macportsがインストールされていることを前提に始めます。
インストールするもののパッケージ名は次の通りです。

 ・python34 @3.4.3_5
 ・py34-chainer @1.1.1_0
   ... A flexible framework of neural networks
 ・py34-six @1.9.0_0
   ... A Python 2 and 3 compatibility library
 ・py34-pip @7.1.2_0
   ... A tool for installing and managing Python packages

まずは,python34のインストールから。

$ sudo -E port install python34 

インストール後,python34を使えるようにします。
念のため,バージョンがpython34のものになっているかも確認しておきましょう。

$ sudo -E port select --set python python34 
$ python --version

次は,残り3つをインストールしていきます。

$ sudo -E port install py34-chainer
$ sudo -E port install py34-six
$ sudo -E port install py34-pip

最後に,
先ほどインストールしたchainerのバージョン@1.1.1_0ですが,
Macportsのツリーでは最新版ではないので,
pipコマンドを使用して最新版にしちゃいましょう。

$ pip-3.4 install --upgrade chainer

これにて,環境設定は完了です。




簡単なサンプル

Day 1 ということで私もディープラーニングに興味を持ち,勉強を開始したばかりです。
高度なことは全くまだできませんので,ご了承ください。短いサンプルを示します。

このサンプルは,階層型ニューラルネット(Hierarchical Neural Network)ですが,深層化しているわけではないため,深層学習とは呼べないと理解しています。(間違ってたらコメントで教えてください)

#!/usr/bin/env python
import numpy as np
import chainer.functions as F
from chainer import Variable, FunctionSet, optimizers, gradient_check

# 入力の設定
x = Variable(np.array([[1, 2, 3]], dtype=np.float32))

# 入力に対する結合の重みの設定
w = F.Linear(3, 3)
# 確率的勾配降下法(Stochastic Gradient Descent Method)
# を用いた誤差逆伝播学習を使用する
optimizer = optimizers.SGD()
optimizer.setup(w)

# 正解出力の設定
t = Variable(np.array([[4, 13, 3.4]], dtype=np.float32))

# 学習回数(反復回数)の設定
itrstep = 100

# 学習開始
for i in range(0, itrstep):
    optimizer.zero_grads()

    # 入力及び結合重みから出力を計算する
    y = w(x)
    # 出力をコマンドラインに表示
    print(y.data)
    # 平均二乗誤差の算出
    loss = F.mean_squared_error(y, t)
    # 結合重みの修正
    loss.backward()
    optimizer.update()

    # 次の反復ステップへ

続いて実行結果。

[[-0.26077998  1.17885709  0.33666974]]
[[ 0.16529801  2.36097169  0.64300281]]
[[ 0.54876822  3.42487407  0.91870254]]
[[ 0.89389133  4.38238668  1.16683233]]
[[ 1.20450222  5.24414778  1.39014888]]
[[ 1.48405206  6.01973343  1.59113419]]
[[ 1.73564684  6.71775961  1.77202058]]
[[ 1.96208215  7.34598398  1.93481874]]
[[ 2.165874    7.91138554  2.08133674]]
[[ 2.34928656  8.42024708  2.21320319]]
[[ 2.51435804  8.87822247  2.33188272]]
[[ 2.66292191  9.29039955  2.43869448]]
[[ 2.79662991  9.66135979  2.53482509]]
[[ 2.91696692  9.995224    2.62134266]]
[[  3.02527046  10.29570198   2.69920826]]
[[  3.12274337  10.56613159   2.76928735]]
[[  3.21046925  10.80951881   2.8323586 ]]
[[  3.28942204  11.02856731   2.88912296]]
[[  3.36047983  11.22570992   2.94021058]]
[[  3.4244318   11.40314007   2.98618984]]
[[  3.48198867  11.5628252    3.02757072]]
[[  3.53378987  11.70654297   3.06481361]]
[[  3.58041096  11.83588791   3.09833217]]
[[  3.62236977  11.95229912   3.12849903]]
[[  3.66013288  12.05706978   3.15564919]]
[[  3.69411945  12.15136337   3.18008423]]
[[  3.72470737  12.23622704   3.20207596]]
[[  3.75223708  12.31260395   3.22186828]]
[[  3.77701306  12.3813448    3.23968124]]
[[  3.79931164  12.44320965   3.25571346]]
[[  3.81938052  12.49888802   3.2701416 ]]
[[  3.8374424   12.54899979   3.28312778]]
[[  3.85369825  12.5941       3.29481506]]
[[  3.86832833  12.63469028   3.30533338]]
[[  3.88149571  12.67122078   3.31480026]]
[[  3.89334631  12.7040987    3.32332015]]
[[  3.90401125  12.7336874    3.33098793]]
[[  3.91361022  12.76031971   3.33788943]]
[[  3.92224932  12.78428841   3.34410071]]
[[  3.93002462  12.80585861   3.34969044]]
[[  3.93702173  12.82527256   3.35472131]]
[[  3.94331956  12.84274578   3.35924935]]
[[  3.94898772  12.85847092   3.36332417]]
[[  3.95408916  12.87262535   3.366992  ]]
[[  3.95867991  12.88536167   3.37029266]]
[[  3.96281195  12.89682484   3.37326336]]
[[  3.9665308   12.90714359   3.37593699]]
[[  3.96987748  12.91642952   3.37834311]]
[[  3.9728899   12.92478561   3.38050914]]
[[  3.97560096  12.93230629   3.38245821]]
[[  3.97804117  12.93907642   3.38421226]]
[[  3.98023701  12.94516945   3.38579082]]
[[  3.98221302  12.95065308   3.38721204]]
[[  3.98399162  12.95558739   3.38849092]]
[[  3.98559284  12.96002769   3.389642  ]]
[[  3.98703313  12.96402645   3.39067769]]
[[  3.98832989  12.96762276   3.39161015]]
[[  3.98949695  12.97086239   3.3924489 ]]
[[  3.99054718  12.97377396   3.39320397]]
[[  3.99149251  12.97639656   3.39388347]]
[[  3.99234343  12.97875881   3.39449525]]
[[  3.99310899  12.98088169   3.39504552]]
[[  3.99379826  12.98279381   3.39554119]]
[[  3.99441791  12.98451328   3.39598703]]
[[  3.99497652  12.98606205   3.39638829]]
[[  3.99547887  12.98745632   3.3967495 ]]
[[  3.99593067  12.9887104    3.3970747 ]]
[[  3.99633789  12.98983955   3.39736676]]
[[  3.9967041   12.99085426   3.39763045]]
[[  3.9970336   12.99176979   3.3978672 ]]
[[  3.99733019  12.99259186   3.39808059]]
[[  3.99759698  12.99333382   3.39827251]]
[[  3.99783754  12.99399948   3.39844513]]
[[  3.99805379  12.9946003    3.39860058]]
[[  3.9982481   12.99513912   3.39874077]]
[[  3.99842334  12.9956255    3.39886642]]
[[  3.99858141  12.99606323   3.3989799 ]]
[[  3.99872303  12.99645615   3.39908195]]
[[  3.99885058  12.99681091   3.39917397]]
[[  3.9989655   12.99713039   3.39925623]]
[[  3.99906921  12.9974165    3.39933085]]
[[  3.9991622   12.9976759    3.39939761]]
[[  3.99924588  12.99790955   3.39945793]]
[[  3.99932098  12.99811745   3.39951205]]
[[  3.99938893  12.99830532   3.39956093]]
[[  3.99945021  12.99847507   3.3996048 ]]
[[  3.99950504  12.99862862   3.39964414]]
[[  3.99955463  12.99876404   3.3996799 ]]
[[  3.99959898  12.99888802   3.39971185]]
[[  3.99963951  12.9989996    3.3997407 ]]
[[  3.99967527  12.99909973   3.39976645]]
[[  3.99970794  12.99919033   3.39979005]]
[[  3.99973702  12.99927139   3.39981103]]
[[  3.99976349  12.99934387   3.39982986]]
[[  3.99978709  12.99940872   3.39984679]]
[[  3.99980807  12.9994688    3.39986205]]
[[  3.99982715  12.99952126   3.39987588]]
[[  3.99984479  12.99956989   3.39988852]]
[[  3.99985981  12.99961281   3.39989972]]
[[  3.99987388  12.99965      3.39990973]]

以上のように,学習を繰り返す(結合重みをあるアルゴリズムに従って反復して修正する)ことで,設定した正解出力に近づいていることがわかりました。
にしてもChainerは非常に使いやすいですね,こういったフレームワークの良さを実感しました。

誤差逆伝播法の詳細については後日まとめて,次からは深層学習に入りたいと思います。

Gauss-Legendre Quadrature

ガウスルジャンドル求積

{n}を正の整数として,多項式関数 {f(x)} は次式で表すことができます。
{
  \displaystyle\int_{-1}^{-1} f(x) dx = \displaystyle\sum_{i=1}^{n} \omega_{n,i}  f(x_{n,i})
}

ここで,{x_{n,i}}ガウス点,\omega_{n,i} は重み。

上述の式が成り立つのは,
ラグランジュの補間法と異なる {n} 個の根をもつ多項式を用いれば導けます。
詳しいメモは時間のあるときにここに追記します。

Dustbin; 1箱目

チームゴミくず

標題として,始動

自らの自力を養いつつ,その技術を無駄使いしようというプロジェクト

2015/09/06にキックオフミーティングを行った...のか?
以下,覚えてることだけ纏める

技術を結集させたゴミ箱を作ろう

必要な技術を列挙

機械学習(ディープラーニング)
・画像解析
・ハードウェア・ソフトウェア設計(デザイン込)
・移動体の外界センサ情報による3次元環境構築

大分類は以上.
各自,
得意分野もしくは身につけたい分野を探るということで終結.

私は,機械学習・画像解析あたりが興味あるので探っていきます.

ディープラーニングのフレームワーク

・Caffe
・Chainer

OSX上で自作OSあれこれ

OSXで自作OS

使用する予定の環境まとめ

テキストエディタEmacs
バイナリエディタ:0xED
・パッケージ管理システム:Macports
・仮想環境:VirtualBox
アセンブラ:enam
・その他もしかしたら使うかもしれないコンパイラ:gfortran,gccなど

逐次,設定等々の記事も増やしていきます.

GNU assemblerについて

OSXでは使用できるはずです.

Windows10で自作OS

使用する予定の環境まとめ

テキストエディタAtom
バイナリエディタ:みてい
・パッケージ管理システム:とりあえずchocolatey
・仮想環境:VirtualBox
アセンブラ:GAS
・その他もしかしたら使うかもしれないコンパイラ:gfortran,gccなど