Recent Posts
機械学習モデルの標準フォーマット
機械学習モデルにも標準規格を Python の(Python に限らずだが)機械学習フレームワークは複数存在する。
それぞれのフレームワークで実装され、そして生成される機械学習モデル(以下、 ML モデル)は、当然ながらそのフレームワーク・ライブラリに特化したものになる。 したがって、例えばライブラリAで実装・学習した ML モデルは、ライブラリA上のみでしか推論・再学習などを行えない。 ライブラリAで作ったモデルはライブラリB上で推論を実行することはできない。 ML モデルはライブラリ間で互換性がないのが基本である。
ところがこうした ML モデルについても、標準規格を設けて普及させる流れがあるらしい。 究極的には ML モデルの実装に使用するライブラリ・フレームワークに制限されることなくモデルをデプロイ、推論に使えるような世の中になる(本当か?)
ONNX とは ONNX(Open Neural Network eXchange, 「オニキス」と呼ぶらしい1)は、まさにその ML モデル表現の標準フォーマットとして策定されたとのこと。
公式によると
ONNX is an open format built to represent machine learning models. ONNX defines a common set of operators - the building blocks of machine learning and deep learning models - and a common file format to enable AI developers to use models with a variety of frameworks, tools, runtimes, and compilers.
read more
Python でファイルパス文字列
Python でファイルパス文字列を扱う方法について。
ファイルからなにかデータを読み込む、あるいはデータを何からの形式で書き出すなど、言語の種類に関わらずファイル操作は重要である。 そのために、ファイルパス文字列を扱う場面は往々にしてあるわけである。
例えば、ディレクトリ名(dirname)とファイル名(basename)が別々の変数に入っていて、それらをつなげて絶対ファイルパス文字列を作ろうとする際、初心者の頃は愚直に文字列同士を結合する書き方をしていたものだった:
dirname + '/' + filename そのせいで、パスのスラッシュ / がダブったり、あるいは足りなかったりして、エラーを生んでしまうなど…。
そこから多少進歩して、 Python 標準の os.path モジュールを活用して
os.path.join(dirname, filename) と書くようになっていたが、よく調べればちゃんとファイルパスを扱う専用の機能が標準搭載されるようになっていたらしい…。
Pathlib を使おう 公式ドキュメント: https://docs.python.org/ja/3.7/library/pathlib.html
Python 3.4 から標準搭載されるようになった機能らしい。
公式の説明によると
このモジュールはファイルシステムのパスを表すクラスを提供していて、様々なオペレーティングシステムについての適切な意味論をそれらのクラスに持たせています。
ということで、これを使うとファイルパス文字列を、純粋な文字列オブジェクトではなく、ちゃんとした(?)ファイルパスオブジェクト Path で管理できる。
ざっと性質をまとめると以下:
ファイルパス文字列を与えることで、ファイルパスオブジェクト Path を作ることができる 正確には OS の種類に応じたそのサブクラス WindowsPath/PosixPath を作る Windows(WindowsPath) か、非 Windows(PosixPath)か、その OS により決定される それらの親クラスとして PurePath/PureWindowsPath/PurePosixPath があり、これらは実際のIO操作は伴わない単純な計算処理だけを担う つまり posix 環境でファイルパス(文字列)の操作はできるが、ファイルアクセスはできない イミュータブルでハッシュ可能、つまり辞書のキー等にも使える str() でキャストすればファイルパス文字列に戻せる スラッシュ / で Path 同士の結合ができる(= os.
read more
CEDEC2021に参加した
タイトル通り。 色々な理由で、縁あって受講者側として参加することができた。
CEDEC は「Computer Entertainment DEvelopers Conference」のことで、一般社団法人コンピュータエンターテインメント協会様による主催。 (CEDEC2021ホームページ: https://cedec.cesa.or.jp/2021/ )
文字通り、ゲーム等のコンピュータエンターテイメントに関する開発に携わる人々向けの技術カンファレンスである。
8/24 ~ 8/26 の3日間、オンラインでセッションを聴講する形式で行われた。
私の浅い知識によって、食らいついていけるセッションばかりではなかったが、聴講したセッションはどれも興味深く大変良い刺激を受けたと感じている。
近いうちに、気になったセッションのうち一部について少し触れたいと思う。
read more