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

銀の弾丸

プログラミングに関して、いろいろ書き残していければと思っております。

Octave-Forge for Windows をインストールしてMinGW / MSYSから利用する

機械学習 行列演算 MinGW / MSYS

MinGW用(?)Octave-Forge for Windows を、Windows 10 にインストールして、MSYS(GitHub for WindowsについてるGitBash)で利用できるようにセットアップしたので、その手順を書いておきます。

しかし、ほとんど Windowsで利用するための手順であって、MinGW / MSYSに関連するのは、PATHとエイリアスの設定だけです。どこがどうMinGW向けなのか、いまだによくわかりませんが、まあいいです。

関係ないけど、いまだにMinGWとMSYSの関係がイメージとして把握できていないので、こういう記事でトンチンカンなことを書いていないか心配です。毎日使っているのにね。


f:id:takamints:20160626213022p:plain
photo credit: I23 - SPANning an octave via photopin (license)


モデリングとシミュレーション―Octaveによる算法
平嶋 洋一
コロナ社
売り上げランキング: 980,248
ITエンジニアのための機械学習理論入門
技術評論社 (2015-10-17)
売り上げランキング: 2,235

ところで、Octaveってナンデスカ?

OctaveGNUフリーソフトウェアで、MATLAB互換の数値演算向け高水準プログラミング言語です。 MATLABは結構お高いのですが、Octaveは無料で利用可能です。

強力な行列演算の機能を備えていて、対話的にも利用できますから、とっても便利。

昨今世間を席巻している画像処理や機械学習人工知能など、行列演算に依存するアルゴリズム開発のプロトタイピングに利用しやすいというわけです。

OpenCVやNumpy等、行列を扱う各種ライブラリでも、似たような関数名が使えます(zerosやeye等)、使い方を覚えておいて損はないと思います。 理系の学生さんとかは私なんかが言うまでもなく使えるのだとは思いますが。

スタンフォード大学機械学習の講義でも使います

昨年(2015年)一部界隈で話題になったCourseraMOOCスタンフォード大学のMachine Learningの講義でも、MATLABOctaveを使用するのが前提です。MATLAB/Octaveで課題に取り組んで、コマンド打ってオンラインで提出するシステムになっていました。

※ しかし、Windows版のOctaveではオンラインでの課題提出機能にバグがあるらしく、Windowsユーザーが受講するには講義中だけ特別に無料利用できるMATLABを使っていました。 てことで今回、講義履修後一年近く経過して、テキスト使って復習したいと思いまして、やっぱりOctave入れなきゃね、となったわけです。

第一人者もお薦めです

CourseraのCEOであり、Machine Learningの第一人者でもある同講義の講師、Andrew NG 先生によれば、「まずはアルゴリズム(演算内容)をMATLAB/Octaveで確認すべし」とのことですよ。

他の開発言語でも行列演算は行えますが、アルゴリズムの開発に集中するために、MATLAB/Octaveを使いなさいと。格段に効率が上がるからと。

じゃあ、Octave-Forgeってなに?

実はよく知りませんでした(笑)

ダウンロードページには、「A collection of packages providing extra functionality for GNU Octave」と書いてあるので、GNU Octaveのための追加機能を提供しているパッケージを集めたものということでしょう。

ということで、インストール手順はこちらです

取り立てて難しいことはなく、敢えて言うなら英語でズラズラ書いてあるのと、ファイルの説明が長い点。 それからWindows 10についての言及が無かったところ。

作業は、圧縮ファイルをダウンロードして、フォルダに展開、実行モジュールへのショートカットを作れば、Windowsから利用するだけなら、ほぼ完了。 Windows 8 以降なら、コマンドラインスイッチの追加設定が必要ですね。

そして、繰り返しになりますが、MinGW / MSYS向けには、PATHの設定とエイリアス

ということで、詳細手順は以下のメニューでレッツゴー

  1. 事前準備:7-Zipのインストール
  2. 圧縮ファイルのダウンロード
  3. セットアップフォルダの作成
  4. 圧縮ファイルの展開
  5. Octave本体のファイルをコピー(もしくは移動)
  6. ショートカットの作成
  7. Windows 8 / 10でのコマンドラインスイッチの追加
  8. ショートカットのアイコン指定
  9. Octave-forge パッケージのコピー
  10. Octave-forge パッケージのビルド
  11. 起動時ワーニングの抑制
  12. オプショナルだが推奨される(?) エディタの設定

1.事前準備:7-Zipのインストール

ダウンロードする圧縮ファイルが、拡張子が7z7-Zipですので、必要な人は、7-Zipのダウンロードページから、お使いのシステムに応じたものをインストールしておきましょう。

2.圧縮ファイルのダウンロード

Octave 3.6.4 のダウンロードページから、 以下の2つをダウンロードします。

3.セットアップフォルダの作成

C:\Octaveというフォルダを作ります。実際にはどのような名前でも良いと説明書に書いてありますが、圧縮ファイルに入っているショートカットなどが、このフォルダを参照してるっぽいので、なるべくならこれに従ったほうが良いと思います。

4.圧縮ファイルの展開

ダウンロードした2つの7zC:\Octave以下にディレクトリごと展開します。以下のようになってるはず。

C:\Octave\
  +-- Octave3.6.4_gcc4.6.2_20130408\
  |    +-- Octave3.6.4_gcc4.6.2\
  |    +-- Octave3.6.4_gcc4.6.2(ショートカット)
  |    +-- octave3.6.4_gcc4.6.2_docs(ショートカット)
  |    +-- Octave3.6.4_gcc4.6.2_libblas_readme.txt
  |    +-- Octave3.6.4_gcc4.6.2_readme.txt
  +-- Octave3.6.4_gcc4.6.2_pkgs_20130402\
       +-- Octave3.6.4_gcc4.6.2\
       +-- Octave3.6.4_gcc4.6.2_pkgs_list.txt
       +-- Octave3.6.4_gcc4.6.2_pkgs_readme.txt

5.Octave本体のファイルをコピー(もしくは移動)

この時点でC:\Octave\以下に2つのフォルダがあって、そのどちらにも、Octave3.6.4_gcc4.6.2というサブフォルダがありますね。

このうち、Octave3.6.4_gcc4.6.2_20130408\Octave3.6.4_gcc4.6.2C:\Octave\の直下へフォルダごとコピー(または移動)します。

ここでインストールフォルダは以下のようになっているはず。

C:\Octave\
  +-- Octave3.6.4_gcc4.6.2\
  |    +-- bin\
  |    +-- doc\
  |    +-- etc\
  |          .
  |          .
  |          .
  |
  +-- Octave3.6.4_gcc4.6.2_20130408\
  |    +-- Octave3.6.4_gcc4.6.2\(移動したならこれはない)
  |    +-- Octave3.6.4_gcc4.6.2(ショートカット)
  |    +-- octave3.6.4_gcc4.6.2_docs(ショートカット)
  |    +-- Octave3.6.4_gcc4.6.2_libblas_readme.txt
  |    +-- Octave3.6.4_gcc4.6.2_readme.txt
  +-- Octave3.6.4_gcc4.6.2_pkgs_20130402\
       +-- Octave3.6.4_gcc4.6.2\
       +-- Octave3.6.4_gcc4.6.2_pkgs_list.txt
       +-- Octave3.6.4_gcc4.6.2_pkgs_readme.txt

Windows 7 で単に使うだけなら、この時点で、C:\Octave\Octave3.6.4_gcc4.6.2\bin\octave.exeを実行すれば使えます。残りの手順は、ショートカットを作ったり、ショートカットのアイコンを設定したりという手順です。

※ ちなみに、セットアップが完了したら、Octave3.6.4_gcc4.6.2_20130408Octave3.6.4_gcc4.6.2_pkgs_20130402の2つのフォルダは丸ごと消してかまいません。

6.ショートカットの作成

ということで、任意の場所に Octave の実行ファイルへのショートカットを作成します。

Octave の実行ファイル C:\Octave\Octave3.6.4_gcc4.6.2\bin\octave.exeを右クリックして、コンテキストメニューから「ショートカットの作成」を選択して、あとは任意の場所へ移動します。 とりあえずデスクトップでいいと思います。

f:id:takamints:20160626173232p:plain

7.Windows 8 / 10でのコマンドラインスイッチの追加

Windows 8では、対話式のコマンドラインの入力機能がうまく動かないそうで、ショートカットにコマンドラインスイッチ(オプション)の設定が必要です。 Windows 10でも同様です。

上で作ったショートカットを右クリックして、[プロパティ]を選択して、リンク先の最後にスペースを空けて、-i --line-editing と追加します。

f:id:takamints:20160626173304p:plain

これで対話式のコマンドラインの編集機能が正しく動作するらしいです。

8.ショートカットのアイコン指定

動作にはまったく関係ありませんが、ショートカットのアイコンをOctaveのものに変更します。

「アイコンの変更」をクリックして、
f:id:takamints:20160626222228p:plain

C:\Octave\Octave3.6.4_gcc4.6.2\doc\octave\iconsのアイコンファイルを指定します。
f:id:takamints:20160626222311p:plain

アイコン選んで「OK」「OK」でOKです。
f:id:takamints:20160626222434p:plain

9.Octave-forge パッケージのコピー

次に、Octave3.6.4_gcc4.6.2_pkgs_20130402\Octave3.6.4_gcc4.6.2C:\Octave\の直下へフォルダごとコピー(または移動)します。

フォルダの見た目は特に変わりませんね。

C:\Octave\
  +-- Octave3.6.4_gcc4.6.2\
  |    +-- bin\
  |    +-- doc\
  |    +-- etc\
  |          .
  |          .
  |          .
  |
  +-- Octave3.6.4_gcc4.6.2_20130408\
  |    +-- Octave3.6.4_gcc4.6.2\
  |    +-- Octave3.6.4_gcc4.6.2(ショートカット)
  |    +-- octave3.6.4_gcc4.6.2_docs(ショートカット)
  |    +-- Octave3.6.4_gcc4.6.2_libblas_readme.txt
  |    +-- Octave3.6.4_gcc4.6.2_readme.txt
  +-- Octave3.6.4_gcc4.6.2_pkgs_20130402\
       +-- Octave3.6.4_gcc4.6.2\(移動したならこれはない)
       +-- Octave3.6.4_gcc4.6.2_pkgs_list.txt
       +-- Octave3.6.4_gcc4.6.2_pkgs_readme.txt

10.Octave-forge パッケージのビルド

実はこの部分について、ちゃんと理解していないのですが、「Octaveを使ってMinGW用パッケージをビルドして、Octave起動時に自動的に読み込むように設定するそうです(棒読み)」

上で作ったショートカットをダブルクリックして、Octaveを起動して、以下の5つのコマンドを実行します。 不要なものもあるようですが、とりあえず全部実行して問題は発生しませんでした。

pkg rebuild -auto
pkg rebuild -noauto ad
pkg rebuild -noauto nan
pkg rebuild -noauto gsl
pkg rebuild -auto java

11.起動時ワーニングの抑制

これまでの手順で、ほとんどの設定が完了していますが、この時点で実行すると、大量のワーニングが出ます。

このワーニングは、統計パッケージのfstat関数に関するものらしく、古くて使用されないfstatも多重定義されているというもので、無視してよいと説明されています。

抑制するには、octave起動時に実行されるスタートアップファイルC:\Octave\Octave3.6.4_gcc4.6.2\share\octave\site\m\startup\octavercに、以下の一行を付け加えます。場所はとりあえずプロンプト設定の直後としました。

## System-wide startup file for Octave.
##
## This file should contain any commands that should be executed each
## time Octave starts for every user at this site.

more off
PS1('octave:\#> ')
## ワーニング抑制
warning('off', 'Octave:shadowed-function')

これで大量のワーニングは抑制されましたが、まだ2つほどワーニングが出ています。 この2つは、ワーニングの情報が表示されないので、どうやって抑制してよいかわかりませんでした。ま、2つなので我慢してます。

12.オプショナルだが推奨される(?) エディタの設定

オプショナルですが推奨されるエディタの設定です。 こちらもスタートアップファイルC:\Octave\Octave3.6.4_gcc4.6.2\share\octave\site\m\startup\octavercに設定します。 エディタとしてはNOTEPAD++が推奨されているみたいで、コメントを外せばいいよとされていますが、私はKaoriyaさんのGvimを使っているので以下のように設定しました。

## Uncomment and change any of the following lines for your preferred editor
## EDITOR('C:\\Program Files (x86)\\Notepad++\\notepad++.exe');
## EDITOR('C:\\Program Files\\Notepad++\\notepad++.exe');
EDITOR('C:\\Program Files\\vim74-kaoriya-win32\\gvim.exe');

ただ、実際この設定が、どこに効いてくるのか知りません。


お疲れ様です。以上で設定完了です。

あとは、MSYSでC:\Octave\Octave3.6.4_gcc4.6.2\binにPATHを通して、Windows 8 / 10のユーザーならば ~/.bash_profile.bashrcで、alias octave=octave -i --line-editingと、エイリアスを設定しておけば便利に使えます。

以下、5x5の魔法陣を表示してみました。やあ、数学は美しいですね。

$ octave
GNU Octave, version 3.6.4
Copyright (C) 2013 John W. Eaton and others.
This is free software; see the source code for copying conditions.
There is ABSOLUTELY NO WARRANTY; not even for MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  For details, type `warranty'.

Octave was configured for "i686-pc-mingw32".

Additional information about Octave is available at http://www.octave.org.

Please contribute if you find this software useful.
For more information, visit http://www.octave.org/get-involved.html

Read http://www.octave.org/bugs.html to learn how to submit bug reports.

For information about changes from previous versions, type `news'.

warning: gmsh does not seem to be present some functionalities will be disabled
warning: dx does not seem to be present some functionalities will be disabled
octave:1> magic(5)
magic(5)
ans =

   17   24    1    8   15
   23    5    7   14   16
    4    6   13   20   22
   10   12   19   21    3
   11   18   25    2    9

octave:2>

リンク

ダウンロードサイト