Archive for the ‘講義/実験’ Category

[upload] 情報工学実験2: 探索アルゴリズムその1

木曜日, 12月 22nd, 2011

情報工学実験2の探索アルゴリズムその1を公開しました。
ほぼ昨年通りの内容で、やや課題や説明の仕方を修正しています。レポートの骨組みにも課題説明や求めている報告内容の例を示すようにしてみました。

Installing libsvm-3.1 for Python on Mac OS X 10.6

木曜日, 11月 3rd, 2011

libsvmをコンパイルして「その場で動かす」だけなら README に書いてある手順で進められますが、実用的には好きな場所で実行できるようにしたい。ということでその手順です。

【蛇足コラム】
svm-trainとかの場所をos.path.exists()で確認するようなスクリプトになっているので絶対パスで指定せざるを得ないのだけど、cdll.LoadLibrary()のように環境変数か何かで指定されたPATHを参照して対象ファイルが存在するかを判断するようなライブラリって無いんだろうか。
ConfigParserあたりで変更箇所を一括管理する形で書くのも良いかもしれないけど。

環境構築手順

  1. libsvm本家サイトからソースをダウンロード。
  2. コンパイル。
  3. > tar xvfz libsvm-3.1.tar.gz
    > cd libsvm-3.1
    > make
    
  4. 実行ファイルを ~/bin/libsvm/ に、ツールを ~/bin/libsvm/tools/ にコピー。(要PATH設定)
  5. > mkdir -p ~/bin/libsvm/tools
    > cp svm-predict svm-scale svm-train ~/bin/libsvm/
    > cp tools/*.py ~/bin/libsvm/tools/
    
  6. スクリプトのパスを修正。
  7. > emacs ~/bin/libsvm/tools/easy.py
    is_win32でWindowsか否かに分けてパスをしている箇所で、
    svmscale_exe 等のパスを絶対パスで指定。下記は記入例。
    =====begin(easy.py)=====
    svmscale_exe = "/Users/tnal/bin/libsvm/svm-scale"
    svmtrain_exe = "/Users/tnal/bin/libsvm/svm-train"
    svmpredict_exe = "/Users/tnal/bin/libsvm/svm-predict"
    grid_py = "/Users/tnal/bin/libsvm/tools/grid.py"
    gnuplot_exe = "/usr/local/bin/gnuplot"
    =====end=====
    
  8. バイナリの動作確認
  9. > svm-train
    等と引数無しで実行した時にエラーが出なければ
    (使い方が出力されるだけなら)OK。
    
  10. Python用 shared libraryのインストール
  11. > cd python
    > make     #../libsvm.so.2 が作成される
    > sudo cp ../libsvm.so.2 /usr/local/lib/
    
  12. Python用ライブラリ(スクリプト)の編集
  13. # ライブラリをインストールする場所の確認。
    > python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
    # 以下は「/Library/Python/2.6/site-packages」と出力された場合の例。
    > emacs svm.py
    「if sys.platform == 'win32':」後でパスを指定している箇所にて、
    以下のように変更。元のインデントを保つように注意。
    =====begin(svm.py)=====
    #libsvm = CDLL(os.path.join(os.path.dirname(__file__),\
    #                '../libsvm.so.2'))
    cdll.LoadLibrary("libsvm.so.2")
    libsvm = CDLL("libsvm.so.2")
    =====end=====
    
  14. Python用ライブラリ(スクリプト)のインストール。
  15. > mkdir /Library/Python/2.6/site-packages/libsvm
    > cp svm.py svmutil.py /Library/Python/2.6/site-packages/libsvm/
    > touch  /Library/Python/2.6/site-packages/libsvm/__init__.py
    
  16. Python用ライブラリの動作確認。
  17. > python
    >> from libsvm import svm
    でエラーが出なければOK。
    

参考サイト: Installing libsvm-3.0 for Python on OSX 10.6

(info1/shell) 提出状況

月曜日, 5月 16th, 2011

情報工学実験1/スクリプトプログラミングのレポート提出状況は以下の通りです。

チェック時刻: 6/3, 21:00

アカウントの次に書かれている数字は遅延日数です。


火曜日組

e055757/, 1
e085717/, 未提出
e085726/
e085741/
e085753/, 未提出
e085759/, 未提出
e095723/, 未提出
e095731/, 未提出
e105701/
e105703/
e105707/
e105711/
e105714/
e105718/
e105722/
e105723/
e105724/
e105725/
e105726/
e105731/
e105733/
e105734/, 未提出
e105735/
e105739/
e105740/
e105747/
e105751/
e105753/
e105754/
e105755/
e105756/
e105757/
f115007/


金曜日組

e055754/, 未提出
e075734/, 未提出
e075742/
e095713/, 5/26(マシントラブル)
e095714/
e095719/
e095757/, 5/26
e095758/, 未提出
e105702/
e105704/
e105705/
e105706/
e105708/
e105709/
e105710/
e105713/
e105715/
e105716/
e105717/
e105719/
e105721/
e105727/, 5/26
e105728/
e105729/
e105730/
e105732/
e105736/
e105737/, 5/31
e105738/
e105741/
e105742/
e105743/
e105744/
e105745/, 5/25(事前相談有り)
e105746/
e105748/
e105749/
e105750/, 未提出
e105758/, 6/2
e105759/, 5/31
e105760/

(進化計算班議事録) 2011/04/18, 全体概説+イントロ+zsh補足+Mercurial補足

月曜日, 4月 18th, 2011

情報工学実験3/進化計算班の1回目が終了しました。MLに議事録を流しているのですが、参照し難い部分もあるので公開を兼ねてHTML版を投稿。


目次
議事録
zsh補足
Mercurial補足
 ・(1) 環境変数の設定。
 ・(2) hg 設定ファイルの編集。
 ・(3) リモートでリポジトリを作成。
 ・(4) ローカルにリポジトリを複製する。
 ・(5) リポジトリ内で作業する。
 ・(6) 必要に応じて古いバージョンに戻す。
 ・(extra.) マージの例。
 ・(extra.) 必要ないファイルを add 対象にしてしまった場合。


議事録

・プレガイダンス
・レポート確認: Level0: オープンソース外観
背景・基礎知識
・課題: Level1
・グループ作成
 ・グループ1: 095751J 東川上一成, 095720J 慶留間諒太, 095731D 新城幸之佑
 ・グループ2: 095771C 宮里友美, 095725K 重信琢人
 ・グループ3: 095708K 太田陽祐, 095701B 青木史林
・オプション: zsh & Mercurial 実習(複数人でシェアする使い方)。
・次回予定: GA概要、auto-complete.el &簡易プログラミング予定。


zsh 補足

参考サイト
漢のzsh
zshは、tcshやbash等を使っている以下のような症状に悩んでいる人に有効 である。

今回は便利な設定をコピーして利用しましたが、各設定の意味を理解するには自分で設定を読んだり、上記サイトやドキュメントを読んでください。便利な機能についてもいろいろ解説されてます。


Mercurial 補足

利用前の準備(個別リポジトリの場合)

バージョン管理システムの一例として学科でも提供してるMercurialを利用して開発を進めます。

(1) 環境変数の設定。
~/.zshrc 等のシェル用設定ファイルで
export HGENCODING=UTF-8
EDITOR=emacs

を設定。shark 側は設定済みですので、ローカル側にやっておきましょう。EDITOR は設定しなくても良いですが、デフォルトだと commit 時のエディタが vi になります。vi好きな人はviを指定しましょう。

(2) hg 設定ファイルの編集。
commit する際のユーザ名を指定しておきましょう。
~/.hgrc に
[ui]
username = Naruaki TOMA 

ぐらいを設定。ローカル側でやっときましょう。これを設定しておくと、commit 時の username が見つからなかったとかいうwarning が出なくなります。

(3) リモートでリポジトリを作成。
shark にログインし、リポジトリを作成します。リポジトリの場所は、~info3/HG/2011/ 以下にしてください。
 ・個人利用のものは ~info3/HG/2011/e095700/
 ・グループ利用のものは ~info3/HG/2011/groupname/
 ・全員共同利用のものは ~info3/HG/2011/share2/
とします。

例えば、e095700 というアカウントの人が個人利用のリポジトリをつくる場合には以下のようにします。

macbook> ssh info3@shark.nal.ie.u-ryukyu.ac.jp
shark% cd HG/2011
shark% hg init e095700

これで shark 側での作業は終了です。

(4) ローカルにリポジトリを複製する。
実際に作業するには、ローカル側で前述のリポジトリを複製し、ローカル内で管理するようにします。リポジトリを複製するためには以下のコマンドを実行しましょう。
macbook> mkdir temp	#作業用ディレクトリを作成
macbook> cd temp
macbook> hg clone ssh://info3@shark.nal.ie.u-ryukyu.ac.jp//home/info3/HG/2011/e095700/

引数が長ったらしいですが、これも一度zshで実行しておくと、「hg」や「hg clone」まで入力した状態で Ctrl+P で以前利用した引数を自動で補完してくれます。

(5) リポジトリ内で作業する。
ファイル生成したら add して、必要な時に commit します。
macbook> hg add (ファイル名)
 *ファイル名を省略することが可能ですが、その場合には
  未登録のファイル全てが対象になりますので、不要な
  ファイルまで登録候補になってないか確認してください。
macbook> hg commit
 *ただし、この時の commit ではメインリポジトリには反映しません
  ので、ローカルのみの管理になります。サーバ上にも反映するには
  commit してから push します。
macbook> hg push
 *普段は commit だけをやっておき、共用が必要になるタイミングで
  push する使い方になるでしょう。

(6) 必要に応じて古いバージョンに戻す。
macbook> hg log -v
 で更新履歴を参照できるので、そこで付けられてるバージョン番号を見つけ、
macbook> hg update -r (バージョン番号)
 として指定したバージョンに戻します。

(extra.) マージの例。
前提:サーバ側に最新状態があり、ローカル側で古いリポジトリで作業をしてしまった。
macbook> emacs test
macbook> hg commit
macbook> hg push
 *エラー!
macbook> hg pull
macbook> hg merge
 *新旧混ざったファイルが生成されるので、それを目視確認しながら編集。
macbook> emacs test
macbook> hg resolve --list	# マージ状態の確認
macbook> hg resolve -m test
 *編集し終えたことを明示。
macbook> hg commit
macbook> hg push

(extra.) 必要ないファイルを add 対象にしてしまった場合。
macbook> hg status
macbook> hg revert test~
macbook> hg status
 *問題無ければcommit&push

[update] 実験1,3のリンク(一部)を掲載

月曜日, 4月 18th, 2011

講義・実験一覧のページに、下記実験分のリンクを掲載
しました。スクリプトプログラミングについては近いうちに準備する予定です。

  • 実験1の長田先生と一緒に担当しているCCNAラボ実習
  • 実験3の進化計算班

(実験の議事録もこっちに掲載してみるかなぁ)

[upload] 情報工学実験2: 探索アルゴリズムその1,2

月曜日, 12月 6th, 2010

情報工学実験2の探索アルゴリズムその1その2を公開しました。

レポートの骨組みに課題説明や求めている報告内容の例を示すようにしてみました。

情報工学実験2/探索アルゴリズム1の口頭試問日調整

月曜日, 12月 6th, 2010

探索アルゴリズム1の口頭試問日調整用の記事です。
「空き時間目安」を参照の上、「口頭試問希望の手順」に沿って調整してください。


口頭試問希望の手順

(1) レポートを提出(サーバにアップロード)する。
(2) メールで提出報告する際に、空き時間目安を参照の上、希望日&時間帯を申請する。
(3) 特に問題無ければ、私から承認メールを返信します。
(4) 予約時間帯にグループメンバ全員で口頭試問。(約20分程度)
 *場所は當間部屋(705室)です。


空き時間目安

あくまでも目安です。実際には下記時間帯で対応できないこともありますので、ご了承ください。

12/17(金), 午前中

12/20(月), 午前中
12/21(火), 丸一日OK
12/22(水), 午前中
12/23(木)*祝日, 希望次第で調整
12/24(金), 午前中(レポート締め切り日)

12/27(月), 午前中(レポート締め切り日)
 13:00-13:20, 金グループ8
 13:20-14:20, 補講
 16:30-16:50, 金グループ7
12/28(火), 丸一日OK
 13:00-14:00, 別件
 13:50-14:10(別件次第), 金グループ6
 14:30-14:50, 金グループ3
 14:50-15:10, 金グループ3(探索2)
 16:30-16:50, 金グループ4
12/29(水), 大学休みですが希望次第で調整
     →希望者がいたので14:00-16:00の間のみ受け付けます。
 14:00-14:20, 金グループ1
 14:30-14:50, 月グループ5
 15:00-15:20, 月グループ7
 15:30-15:40, 金グループ7(未実施分)

1/4(火), 丸一日OK
 11:00-11:20, 月グループ1
 15:00-15:20, 月グループ4
1/5(水), (多分)丸一日OK
 14:00-14:20, 月グループ3
 14:40-14:50, 月グループ1(未実施分)
1/6(木), 午前中〜3時限目までOK。
1/7(金), 午前中 or 17:00-18:00
 17:00-17:20, 金グループ10

1/11(火), 丸一日OK
 11:30-12:00, 金グループ6(探索2)
 14:00-14:20, 金グループ5
 14:40-15:00, 月グループ6
 15:00-15:20, 月グループ8
 16:00-17:00, 別件
 18:00-18:20, 金グループ2


口頭試問未実施グループのリスト

>未実施
(月8&10)

>終了
金1,2,3,4,(5),6,7,8,(10)
月1,3,4,5,6,7,(8)

>オプション(探索アルゴリズム2)終了
金3,4,6
月1,4

>修正確認(探索アルゴリズム1)
金1,3,(4),6,8
月1,4,5,6,7

>修正確認(探索アルゴリズム2)
金4
月1,7


メモ

提出状況(メール報告があった分)

>探索アルゴリズム1
金1,2,3,4,5,6,7,8,10
月1,3,4,5,6,7,8

>探索アルゴリズム2
金1,2,3,4,5,6,7,8,10
月1,3,4,5,6,7,8

[upload] 情報工学実験1:スクリプトプログラミング

月曜日, 5月 3rd, 2010

実験1のテーマ「スクリプトプログラミング(5/11, 5/14)」の資料を仮アップしました。課題は調整中です。

[upload] 情報工学実験2: 探索アルゴリズムその2

火曜日, 12月 22nd, 2009

情報工学実験2: 探索アルゴリズムその2を公開しました。

[upload] 情報工学実験2: 探索アルゴリズムその1

木曜日, 12月 17th, 2009

情報工学実験2: 探索アルゴリズムその1を公開しました。レポートのスケルトンを準備中です。