python

Google Colaboratoryのメモ

使い方(Google Driveの利用を前提) chainerのチュートリアルの最初にGoogle Colaboratoryの使い方がは参考になる。 そもそも,先にgoogle driveの使い方を学ぶ必要があるみたいだ。 Google driveにログインしてワーキングフォルダを作成する。 作成したフォ…

t-sne(Sklearn)の使い方とプロット(Seaborn)

Web上で見る例がMNISTなどのデータセットで書かれている場合が多いので,もっと単純な場合を例にt-sneの使い方をメモしておく。 また,その描画で手こずったのでそのメモもしておく。描画はMatplotlibを使って各クラスを色分けする方法で手こずった。ただ散…

PymunkでPinJointを使う例

振り子運動のようなケースをシミュレーションしたい場合。 PymunkのExampleには複数の振り子を同時にシミュレーションする例(newton_cradle)があるが,単純に1つの場合の例。 初期のBodyとPinのアンカー配置で紐の長さが変わる。 import sys import pymunk …

Pymunkメモ

準備 内部的にはChipmunk(Cベースの2次元物理エンジン)を使用している。Rubyなども公式サポートされている。 類似のライブラリとして(Py)Box2Dがあるが,ドキュメントはPymunkの方が良い印象。 画面表示にはPygame, Pyglet, Matplotlibが使える模様。 $ pip…

順列,組合せ,直積でのループ

順列数や組合せ数ではなく,順列,組わせでループしたい時がある。 意外と組むのが面倒だけれど,Pythonだととても便利なライブラリが標準で与えられている。 使い方は要素となるものをリストに入れて(下の例だとa),itertoolsの,組合せ=combination, 順…

OpenCVによる物体追跡

OpenCVには物体追跡アルゴリズムがcontrib-libとして提供されている。 Web上にたくさんサンプルが落ちているので参考にやってみる。 インストール 追跡アルゴリズムはcontrib提供なので別途インストールが必要。 VideoCaptureを使うにはOpenCVのコンパイル時…

CNNによるMNISTの埋め込み(t-SNEも)

前回に続いて,学習済みモデルの中間層の出力を取り出す例として,学習済みCNNを自己符号化(オートエンコーダ)として使う例をやってみる。 コードはPyTorch公式exampleのmnistを少しいじって,モデルの中間層が取り出しやすくして,t-SNEによる埋め込みを行…

PyTorchのモデルの書き方の整理

サマリ いくつかの書き方があるが,混乱するのは下記の種類が色々Webに見られるからか。 ① initにはパラメタありだけ,パラメタが無いものはforwardに。これが一番柔軟性があるように思う。モデルの中間層を細かく取り出したり,活性化関数を変えたりしたい…

PyTorchでのモデルの中間層へのアクセス方法

PyTorchにはいろいろなモデルの書き方があるけど,このメモの内容を考えると学習パラメタが無いレイヤ含めてinitにもたせておくほうが良いのかもしれない。 (と思ったけど,一番最後のレイヤをとりあえずコピーしてforwardを再定義するやり方ならどっちでも…

CNN in MNIST with PyTorch (PyTorchの基本メモ)

PyTorchのチュートリアルとexampleはとても参考になる。0.4から色々変わっているようだし,改めて情報を整理する。 まず今回は,MNISTを動かしながら以下の項目についてメモしておく。 MNISTデータのロード方法。可視化方法。 ネットワーク,学習,テストの…

クランプ関数(0〜255に値を丸める)のやり方

またまたcodewarsの他人の解答より。 本題はRGBの変換だったけど,その前処理で0以下の数値を0に,255以上の数値を255にクランプする処理がある。 僕は富豪的に下記で。 lst = map(lambda x: 0 if x<0 else x, lst) lst = map(lambda x: 255 if x>255 else …

文字列からの数値抜き出しとソート時のインデックス取得

CodeWarsより。 わかりやすいように少し改題。また,CodeWarsはPython2で動いているので下記のコードは通らない。 問題 入力:数値を含む文字列の配列が与えられる。ただし,各文字列には1~9の数字が1つだけ入っており,文字列間に含まれる数値の重複はない…

配列の中に奇数回出現する1つの整数値

codewarsというので遊んでいたら,他人の良い回答を見つけた。 問題 整数の配列が与えられる。その中に1つだけ奇数回出現する整数値が存在する。それを求めよ。 例)[1,3,5,2,6,8,4,3,1,5,2,6,8,3] -> 3 色々とやり方はあると思うけれど,XORを使う方法がな…

並列計算の効果検証用プログラム

並列化の試行やJITの効果テストなどのために,Forをたくさん回す計算例が必要になる。 そのような例としてモンテカルロ法を置いておく。 ToDo 並列計算のテスト用としては,モンテカルロ法のような単純に並列化される(データ共有が無い)ものだけでなく,適時…

モンテカルロ法1 (モンテカルロ積分)

Rによるモンテカルロ法入門のメモ,その1。 イントロ 統計的推論では最適化と積分の計算,特に実用上は数値計算が必要になる。 数値積分の手法としてモンテカルロ積分がある。シンプソン法などの区分法は多次元の場合に区分を細かくしようとすると計算量が…

パフォーマンス計測 in Python

timeモジュール(time.perf_counter) 使いどころは特定のコードブロックに対する計測。精度はマイクロ秒程度。精度を求める場合はこれ。(逆にcProfile/line_profileなどのプロファイリングは基本的にクロック程度の精度,1/100秒程度しかなく,ボトルネックの…

TkinterによるPythonのGUIプログラミング

趣旨 たまに使おうとするとウェブを漁りまくることになるので,注意点だけまとめておく。 ドキュメント Tkinter Reference 8.5 キーの名前一覧 tkとttk テーマを設定すれば一括してウィジットの見た目を変更できるのがttk。 多くのウィジットが同名のウィジ…

MatplotlibのimshowでRGBデータを表示

imshowは2Dデータだけでなく,RGBデータを含む(H, W, CH)のデータを表示することができる。 その際に,floatかintかによって,値の範囲が異なるようだ(調べきれていないので自信が無いけど) float32のときは,[0,1]の実数値,int32などの整数値のときは[0,2…

Pythonのパッケージ構成とimport文

パッケージについて PyPIとかへの登録とかはおいておいて,自作パッケージをimportしたり,他のプログラムから使おうとするときの方法を整理しておく。下記に従えば,最悪,mypackage以下を開発中のパッケージにコピーすれば,そのまま使える。 ディレクトリ…

gifアニメーション(convert)

やりたいこと 評価結果などをアニメーション表示したい時がある。リアルタイムなグラフのプロットならGnuplotでも良いけれど,ゲームプレイ画像などを表示したい場合には画像からアニメーションを作れると良い。 方法 "連番"の画像ファイルを用意する。注意…

機械学習の前処理でのデータの正規化/標準化

前処理の目的 体重と身長など複数の異なる特徴量を生で扱ってしまうと、出力に対して使いやすい(大まかにFitしやすい)方を優先してしまう問題がある。 内容 問題解決の単純な方法は異なるカテゴリのデータを同じ範囲のデータに変換する。 変換は入力だけでな…

ArgparserとConfigparser

Deep Learning関連のプログラムを試していると、やたらと設定パラメタが多い。 これまではargparseを使ってきたけど、コードが煩雑になるのでconfigファイルの扱い方を調べてみた。 argparse まずはargparseの基本的な使い方。 import argparse parser = arg…

pythonでのログ(logging)

ロガーは名前で管理される。逆に、同じ名前のロガーは同じものとして扱われる。 それを利用するために、モジュール側ではモジュール名(name)をロガーの名前にしておいて、ユーザ側はモジュールの名前を指定することで当該のロガーを取得して、個別に設定する…

Pythonでのインターフェイス(ABCモジュール)

pythonでインターフェイスのようなことをやりたい場合にはABCモジュールというのが使えるようだ。 でも、あんまり使っている印象はなく、raise NotImplementedErrorで簡易的に代用している場合が多いようだ。 ABCモジュールを使わない場合 簡易的にraise Not…

画像から塗り絵問題の生成(線画抽出)

塗り絵生成 先日のお絵かきロジック生成の時にPILの使い方を覚えた。 その中で、画像処理って使うのも単純で、アルゴリズムも単純なものが多いなぁ、という感想をもった。 例えば、2値化して、エッジ強調すれば塗り絵になるなぁ、すぐ出来そうだなぁ、みたい…

ヒートマップ

配列内のデータをRGBのヒートマップに変換したいことは良くあるのでメモ。 下の関数は配列内のデータの最大値(max_val), 最小値(min_val)とヒートマップ化したい値vを渡すと、そのvのRGBを返す。 def calc_heatmap_rgb(min_val, max_val, v, str_out=True): …

お絵かきロジック問題の生成

動機 前の日記でpythonでの画像の取り扱いをメモしたけど、そのモチベーションは画像からお絵かきロジックを生成したいと思ったから。というのも、最近一発描きというYoutuberさんのお絵かきロジック動画を見て癒やされていたから。一発描きさんは問題を自分…

Pythonでの画像処理の基本

画像形式の基礎知識 JPEGとかは圧縮されているとして、PNGとBMPの違いが分からなくなるのでメモ。 PNG(Portable Network Graphics) Webでのビットマップ画像を扱うために1996年に生まれた。GIFなどに対して後発なのでGIFなどで足りない機能が追加されている…

pythonでのCUIプログラミングTips

入力のTips inputで標準入力から文字を入力する場合に、カーソルキー(矢印キー)は扱いが特殊なので注意。環境依存になるが、入力されたカーソルキーをrepr付きで出力(print(repr(x)))してみると、各キーをASCIIコードでどう取得しているかわかる。 Linux(Ubu…

pythonの速度で気にするところ(高速化メモ)

高速化に関して 高速化はほんとに色々と罠が多い。意図した計測できていなかったり。(特に、python3はmapとかの返り値がジェネレータになっているので、その計測を間違っている例とかがウェブには多い。) 高速化の前に計測が必須だが,計測に関しては別のま…