覚え書きブログ

データ解析

ブロック対角行列

ブロック対角行列は、numpyのkronとeyeを用いて作ることができる。例えば、以下の6行3列の行列zの2行ずつ取り出して対角に並べてみる。 z=np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18]]) > z array([[ 1, 2, 3], [ 4, 5, 6], [ 7, 8…

ブロック単位のreshape その2

hirotaka-hachiya.hatenablog.com 前回のブロック単位でのreshapeはある特定の行列の形にしか対応できなかったが、以下のサイトによるとnumpy.hsplitとnumpy.vstackを組み合わせるとどんな行列にも対応できそう。 stackoverflow.com以下のように、4行6列の行…

ブロック単位のreshape

以下の、6行4列の行列を2行2列を一塊とするブロック単位でreshapeして12行2列の行列に変換するとする。 z=np.arange(24).reshape(6,4) >z array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15], [16, 17, 18, 19], [20, 21, 22, 23]]) …

tensorflow2.2のsubclassingによるUnetの実装

前回のコードを拡張し、今度はUnetを実装してみた。 hirotaka-hachiya.hatenablog.comUNetは、以下のように、Uのような形をしたネットワークで、画像を一度低解像度化し特徴抽出してから、元の解像度に戻すことにより復元する。 特徴としては、encoderの各大…

tensorflow2.2のsubclassingによるautoencoderの実装2

前回に引き続き、autoencoderをsublassing AIPで実装してみた。 hirotaka-hachiya.hatenablog.com今回は、以下のように画像を2値化し分類問題として解いてみた。 また、ラベルをone-hotベクトルで表現し、embeddingベクトルに追加してみた。 # 画像の2値化 x…

tensorflow2.2のsubclassingによるautoencoderの実装

以下を参考に、tensorflow2.2以降で許可されたtrain_step, test_stepおよびpredict_stepのオーバーライドを用いて、Subclassing APIでautoencoderを実装してみた。 hirotaka-hachiya.hatenablog.com以下は、全体のコードである。元画像と復元画像の平均二乗…

train_stepのオーバーライドによるsubclassingの簡単化

以下では、tensorflowのバージョン2.1を前提にSequential、FunctionalおよびSubclassing APIを用いた実装方法についておおざっぱにまとめた。 hirotaka-hachiya.hatenablog.com tensorflow 2.1のSubclassing APIでは、自由度が高い分学習まわりでfor文でepoc…

tensorflow2を用いたCNNの実装方法

最近ようやくtensorflow2に移行しはじめたが、kerasの流れがあるからなのか実装方法が沢山あって、なんだかややこしい。 以下のサイトに詳しくまとまっているように、Sequential API、Functional APIおよびSubclassing APIの3つの実装方法がある。 qiita.com…

chromedriverのインストール

Python+seleniumでウェブページからのスクレイピングやキャプチャをするために、google chromeを用いる。 pythonからchromeの機能を使うためには、chromeのバージョンに合わせたドライバーが必要となる。1)まず、インストールされているchromeのバージョン…

Tesseract OCR

TesseractというOCRのオープンソースをインストールして動かしてみた。Tesseractのアルゴリズムについては、 以下のGoogleのRay Smith氏の論文にて述べられている。 http://www.cip.ifi.lmu.de/~langeh/test/2007%20-%20Smith%20-%20An%20Overview%20of%20th…

dropoutとbatch normalizationの特許

dropoutの特許「System and method for addressing overfitting in a neural network」がactiveになっている。 patents.google.comBatch normalization layersの特許がactiveになっている。 patents.google.comディープラーニングの学習に、dropoutとbatch n…

PythonでPoisson分布

PythonでPoisson分布を扱う便利なライブラリとしては,scipy.stats.poissonがある. docs.scipy.org早速使ってみる. まずは,pmf関数を用いて確率密度を計算する. ポアソン分布は平均回数muを指定すると,muを期待値として,もっともらしい,発生回数,訪…

3次元計測の覚え書き(ハミングカラーコードのマッチング編)

以下を参考にして、プロジェクターとカメラを用いた3次元計測の前準備として、ハミングカラーコードを用いてプロジェクターとカメラの位置関係のキャリブレーションを行ってみた。 qiita.com github.com ハミングカラーコードをプロジェクターから投影し、…

google colaboratoryからgithubに保存

google colaboratoryは、github、gistなどと連動させることができ、colaboratory上で作成したファイルを気軽にこれらの外部のサイトで保存し、公開することができる。 まずは、colaboratoryの画面のファイルメニューから「GitHubにコピーを保存」を選択する…

google colaboratoryでcsvファイルの読み込み

Amazon Cloud9+jupyter notebookのような機能が、以下のgoogle colaboratoryで提供されている。 https://colab.research.google.comまず、colaboratoryにアクセスすると以下のような画面がでるので、「PYTHON3の新しいノートブック」をクリックする。 そうす…

scikit-learnを用いた機械学習(教師あり学習 3/3)

<< scikit-learnを用いた機械学習(教師あり学習 2/3) 教師あり学習:分類 手書き数字データMNIST 関数の学習 評価 precision(適合率) recall(再現率) F1スコア(適合率と再現率の調和平均) confusion matrix (混同行列) 教師あり学習のフローのク…

scikit-learnを用いた機械学習(教師あり学習 2/3)

<< scikit-learnを用いた機械学習(教師あり学習 1/3) 教師あり学習のフローのクラス化 演習1 教師あり学習のフローのクラス化 以下は、教師あり学習(回帰)の一連のフローを、クラス化したものです。 import pandas as pd import numpy as np import …

scikit-learnを用いた機械学習(教師あり学習 1/3)

Pythonの代表的な機械学習ライブラリであるscikit-learnを用いて教師あり学習の回帰と分類を実装し、実際にデータから関数を学習していきます。 Scikit-learnとは 教師あり学習のフロー 教師ありデータの準備 データの前処理 訓練用と評価用とに教師データを…

scikit-learnを用いた機械学習(Pythonの基礎 4/4)

<< scikit-learnを用いた機械学習(Pythonの基礎 3/4) Pythonのオブジェクト指向 演習3 Pythonのオブジェクト指向 Pythonでは、関数とクラスの定義を以下のような形式で記述します。 def 関数名(引数1,引数2, ...): 関数の処理 class クラス名: def __i…

scikit-learnを用いた機械学習(Pythonの基礎 3/4)

<< scikit-learnを用いた機械学習(Pythonの基礎 2/4) pdbを用いたデバッグ Pythonにおけるグラフのプロット 散布図 複数の散布図 ヒストグラム 演習2 pdbを用いたデバッグ ※jupyter notebookとGoogle Colaboratoryでは動作しません。 pdbモジュールを…

scikit-learnを用いた機械学習(Pythonの基礎 2/4)

<< scikit-learnを用いた機械学習(Pythonの基礎 1/4) 変数と標準出力 データ構造 リスト(Python 標準) リストの大きさ 要素へのアクセス numpy array numpy.arrayの大きさ スライス 数値演算 ソート pandas.DataFrame DataFrameからnumpy.arrayへの変…

scikit-learnを用いた機械学習(Pythonの基礎 1/4)

Pythonとは Anacondaを用いたPython環境の構築 VS codeを用いた開発 jupyter notebookを用いたインタラクティブ開発 Google colaboratoryを用いたインタラクティブ開発 Pythonとは Pythonは、近年、機械学習を用いたデータ解析やソフトウェアの研究開発にて…

pythonでの地図表示

Pythonで地図を表示するためのライブラリとして、basemapというのがあるらしいので、早速使ってみた。condaを使って、basemapと地図データをインストールする。 >conda install -c anaconda basemap >conda install basemap-data-hiresさっそく、Basemapモジ…

Pythonによる機械学習8(Q学習の応用)

前回実装した強化学習の代表的な手法であるQ学習を、各グループで設定したタスクに応用してみましょう。 タスクは、OpenAI gymから選んでください。 gym.openai.com 宿題 MountainCarタスクを参考に、各グループで選定した課題に、Q学習を適用してみましょう…

Pythonによる機械学習7(Q学習 3/3)

【Pythonによる機械学習7(Q学習 3/3)】 Q学習の実行 演習3 宿題1 宿題2 Q学習の実行 演習3 これまでに実装した、discretizeState、updateQおよびselectActionをメインから呼び出し、Q学習を完成させましょう。 Qテーブルを更新するのには時間がかかる…

Pythonによる機械学習7(Q学習 2/3)

【Pythonによる機械学習7(Q学習 2/3)】 Q関数を用いた方策関数 演習2 Q関数を用いた方策関数 Q学習法により獲得したQテーブルを用いて、方策関数を定義します。代表的な方策関数としては、以下のように、貪欲方策と、貪欲方策があります。 演習2 RLク…

Pythonによる機械学習7(Q学習 1/3)

【Pythonによる機械学習7(Q学習 1/3)】 Q学習 Q学習の実装 演習1 Q学習 前回求めた漸化式表現を利用して、価値関数を更新する代表的な方法であるQ学習法を実装します。 以下は、最も単純な強化学習のタスクである2状態マルコフチェーンに、Q学習を適用…

Pythonによる機械学習6(強化学習の基礎 3/3)

【Pythonによる機械学習6(強化学習の基礎 3/3)】 強化学習のテンプレート 強化学習のテンプレートの実行 演習3 宿題 強化学習のテンプレート 次は強化学習のアルゴリズムの実装の準備に入りたいと思います。 いちから全て実装するのは難しいので、inte…

Pythonによる機械学習6(強化学習の基礎 補足)

【Pythonによる機械学習6(強化学習の基礎 補足)の目次】 WindowsのAnacondaへのOpenAI Gymのインストール手順 その他のgymの実行例 Windows subsystem for LinuxへのOpenAI Gymのインストール手順 WindowsのAnacondaへのOpenAI Gymのインストール手順 1…

Pythonによる機械学習6(強化学習の基礎 2/3)

【Pythonによる機械学習6(強化学習の基礎 2/3)の目次】 エピソード OpenAI Gym Mountain Carタスク 演習2 エピソード 猫の問題箱実験での猫のように、強化学習では試行錯誤を繰り返しながら、より高い報酬和の期待値を獲得する方策を探索します。強化…