Pythonとは
機械学習※やWeb開発など様々な分野で利用されている言語であり、IEEE2017のTop Programming Languages2017ではJava、Cに続いて第3位と世界的にもユーザの多い言語です。Pythonはコードの読みやすさを重視した言語であり、文法がシンプルなため、読みやすく書きやすいものになります。機械学習においては最もメジャーな言語として利用されており、機械学習を用いた研究を行う上ではpythonは必須の言語となります。Pythonの機械学習ライブラリとしてはTensorflow, PyTorch, Chainerなどが盛んに利用されています。
このように世界的に見てもPythonは自律移動ロボット開発を行う上で非常に重要な言語と言えます。しかし、学部の講義ではこの言語に取り組んでいません。研究室に所属してからPythonを書けるようになるための基礎、様々なライブラリを用いて望んだプログラムをかけるようになるための応用と全てを学んでいては非常に出遅れてしまいます。
そこで、研究室所属前にPythonについて一通り学んでおいてください。幸い、様々な書籍が出版されていてインターネット上にも様々な教材があります。自宅で使えるパソコンがない人も大学の自習室のパソコンが使える環境にあります。このようにプログラミングについて学ぶのに非常に恵まれた環境を生かしパソコンと会話をしてプログラミング技術を身につけましょう。
Numpyとは
標準の演算が遅いPythonの欠点を補うために開発され、高速なベクトル演算が可能なライブラリです。C言語などの静的型付け言語では、変数などを宣言する際、型を明示的にコンパイラに伝えます。コンパイルの時点で型が指定されていると、PCは余計な動作をする必要がないために効率良くメモリを使用し高速に動作することができます。Pythonのような動的型付け言語では、高速な動作を失う代わりに、型を気にせずリストに入れたり、宣言の手間が省けたりと、柔軟で短いコードが書けるようになります。しかし、自動運転などリアルタイム性を求められる場合では、型を指定して高速な演算ができるようにする必要があります。NumpyではC言語の配列をPythonで扱いやすいオブジェクトとして使うことで、高速でありながら柔軟なプログラミングが可能です。
Numpyの特徴
-
- ベクトル演算をベースとした省メモリで高速な多次元配列
- 行列計算や乱数生成、フーリエ変換などの関数を簡単に呼び出せる
- PythonとC,C++との連携を可能にするインターフェースの提供
- バイナリやテキストでのファイル入出力を簡単にできる
※機械学習について
近年、深層学習のブレークスルーから深層学習をロボティクスに応用する研究が盛んに行われるようになりました。本研究室でも自動運転技術のコア技術である環境認識、行動選択などに深層学習を用いた研究に取り組んでいます。機械学習ライブラリにはTensorflow, Chainer, Caffe, Kerasを利用していますが、上記以外のライブラリでも問題ありません。