人工知能・深層学習の課題/トピックス

現在の人工知能や深層学習の課題と言われている点を纏めていく。 適時,課題やトピックスを知ったら追記していく。 リスト 説明可能性(BlackBox) 公平性 汎化性 大量の学習データや試行,計算資源が必要 一般常識 ベイズとの融合(不確実性の明示的扱い) Adve…

強化学習の評価環境や機械学習の評価データのメモ

強化学習 OpenAI Gymで知識が止まっていたが,3D環境として最近はUnity-ML-agentが色々と提供しているようだ。ぜひ使ってみる。 OpenAI Gym gym.openai.com github.com 強化学習の評価環境と言えばコレ。Atari環境だけでなく簡単な古典制御のClassicやテキス…

Google Colaboratoryのメモ

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

HTML/CSSのメモ

全般メモ xxx 全体を要素と呼び,"html"をタグと呼び,タグで囲まれる部分をタグボディと呼ぶ。タグには,xxxのように,属性を適時与えることが出来る。 HTMLのコメントは\。CSSのコメントはC言語と同じで/ hogehoge /。 CSSとHTMLの役割分担はHTMLが部品を…

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

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

Pymunkでバネ(DampedSpring)を使う

シミュレーションでバネを使う例。 import sys import pymunk import pymunk.pygame_util import pygame as pg from pygame.locals import QUIT, KEYDOWN, K_ESCAPE SCR_W, SCR_H = 200, 200 TICK = 100. def setup_space(): space = pymunk.Space() space.g…

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秒程度しかなく,ボトルネックの…

訓練・検証・テストの3つにデータを分割する理由

MLの教科書とか記事を読んでいると,データを訓練,検証, テストの3つに分けている場合が多い。 訓練と検証の2つじゃだめなの?とついつい勘違いしてしまうのでメモ。 テストはなんのため? ここの勘違いが全てなんだと思う。 テストの目的は実運用時の性…

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以下を開発中のパッケージにコピーすれば,そのまま使える。 ディレクトリ…

VSCodeのMarkdown Preview Enhanced の色設定

コマンドパレットにて(Alt-x), Markdown Preview Enhanced: Customize CSSにて設定ファイルを開く。 設定ファイルに下記を追記する。 .markdown-preview.markdown-preview { // modify your style here // eg: background-color: blue; background-color: #2…

gifアニメーション(convert)

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

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

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

ArgparserとConfigparser

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

pythonでのログ(logging)

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