TensorFlowでのSoftmax回帰の実装・可視化・識別器の騙し方
概要
先日の記事では深層学習用の自作PCを構築する方法について書きました。
これからは主にTensorFlowを用いてさまざまなモデルを実装していこうと考えています。
まずは基本的なソフトマックス回帰(他クラスのロジスティクス回帰)を実装し、有名なMNISTデータセットについて手書き数字の識別を行います。これさえできれば、ディープなニューラルネットワークも自然な拡張として簡単に実装することが可能です。
この記事では、TensorFlowの公式のチュートリアル*1を参考にしつつ、
- 一般的なニューラルネットワークへの拡張を容易にすること
- TensorFlowで重要となるComputational Graphの概念を明確にし、Graphの構築と実行をわかりやすく分離すること
- 強力な可視化ツールであるTensorBoardの使い方も同時に理解できるようにすること
- Computational Graph上での機能のまとまりを明確にするために名前空間(name scope)を適切に設定すること
を意識した実装を行いました。また、それだけではつまらないので、
- 重みの可視化
- 学習済みの識別器をだます
- 識別器が自信を持って分類したサンプルほど正答率が高いか検証する
といった実験を行っています。
このブログの内容は、Jupyter Notebook (IPython Notebook) 形式でも公開しています。
Jupyter Notebook Viewer
目次:
- 概要
- 1. MNISTデータセットの用意
- 2. Softmax Regressionの実装
- 2.1 準備
- 2.2 Computational Graphの構築
- 2.3 Computational Graphの実行
- 3. TensorBoardによる可視化
- 3.1 TensorBoardの起動
- 3.2 TensorBoardの画面のスクリーンショット
- 4. 重みの可視化
- 5. 識別器をだましてみる
- 6. 自信があるほどよく当たるのか
- 7. おわりに
深層学習用PCを個人で自作するための部品選定ガイド(Amazon・実店舗)
概要
趣味でディープラーニングを行うために自作PCを組んでみました。
自作のメリットとしては、
- 組み合わせの自由度が高く、ディープラーニング向けの構成を実現できる
- 必要十分な構成が可能なため、無駄がなく安い
- 部品の選定を通してハードウェアに関する知識が深まる
- 組み立てが楽しい
などが挙げられます。
しかしながら、CPUやマザーボード、メモリ等の部品には様々な規格があり、部品の選定には正しい知識が必要です。それを共有するのがこの記事の目的です。
購入にあたっては、Amazonで調べたほか、秋葉原の複数の実店舗*1やそれらのオンラインストアを調査しました。
多くの場合Amazonが安いということが分かりましたが、一部は実店舗やオンラインストアの方が廉価でした。本記事ではすべての部品の購入先と購入価格も記します*2。目安にしてください。
結果として、最新のGPUであるGTX 1080 Ti(10万円ぐらい)を搭載したPCをほぼ20万円ちょうど(税込&ディスプレイ・キーボード代込)で作ることができました。
目次:
- 概要
- どのような順番で選ぶ? 大まかな流れ
- GPU
- スペック
- OEMメーカーとFounders Edition
- 選んだもの
- CPU
- スペック
- 選んだもの
- メモリ
- 選んだもの
- マザーボード
- 選んだもの
- 電源ユニット
- 電力
- 変換効率
- 選んだもの
- SSD
- 選んだもの
- ケース
- 選んだもの
- ディスプレイ
- 選んだもの
- キーボード・マウス
- 選んだもの
- やかん
- 選び方
- 費用まとめ
- 購入先・購入価格
- GPU:MSI GeForce GTX 1080 Ti Founders Edition グラフィックスボード VD6289
- CPU:Intel CPU Core i7-6700 3.4GHz 8Mキャッシュ 4コア/8スレッド LGA1151 BX80662I76700 【BOX】
- メモリ:Team TED416GM2133C15DC01-AS 16GB(8GB×2) DDR4-2133対応 デスクトップ メモリモジュールを2セット
- マザーボード:GIGABYTE Intel H170チップセット搭載 ATX マザーボードGA-H170-HD3
- 電源ユニット:玄人志向 STANDARDシリーズ 80 PLUS Silver 650W ATX電源 KRPW-AK650W/88+
- SSD:Crucial [ Micron製 ] 内蔵SSD 2.5インチ MX300 275GB ( 3D TLC NAND / SATA 6Gbps / 3年保証 )正規代理店 CT275MX300SSD1
- ケース:SAMA 左側面がフルアクリルパネル(透明)のATXマザー対応ミドルタワーPCケース JAX-02W (黒透 kurosuke)
- ディスプレイ:【Amazon.co.jp限定】ASUS フレームレス モニター 21.5インチ IPS 薄さ7mmのウルトラスリム ブルーライト軽減 フリッカーフリー HDMI,D-sub スピーカー VZ229H
- キーボード・マウス:レノボ・ジャパン ThinkPad トラックポイント・キーボード - 日本語 0B47208
- 合計
- 組み換え案
- 購入先・購入価格
- 市販の深層学習用PCと自作との比較
- 参考になる本
*1:秋葉原巡りには以下のリンクが参考になりました: ASCII.jp:【2016GW企画】GWだアキバに行こう! アキバPCパーツショップ巡り (1/6)
*2:もちろん価格は時々刻々と変化するので、参考程度に!
国旗には何色がよく使われているのか? - Pythonで色相の頻度分布を調べてみる
概要
Wikipediaを見ると206カ国の国旗が掲載されていますが、国旗にはどのような色が使われる傾向にあるのでしょうか。
ぱっと見では原色系の派手な色が多いような…?
国旗の一覧 - Wikipedia
実際はどうなのか、画像処理によって調べてみました。
具体的には、
- Python + Beautiful Soupによるスクレイピングで国旗画像を取得
- Python + OpenCVによる画像処理で色相の頻度分布を計算
- Javascript + Canvasによって頻度分布を分かりやすく可視化
ということを行います。
目次:
- 概要
- 方法・結果
- 基本的な方針
- 色相
- 頻度の定義
- Pythonによるスクレイピング
- OpenCVによる画像処理
- Javascriptによる頻度の可視化
- 基本的な方針
- 考察
- ソースコード
- Python(スクレイピング・OpenCV・ファイル出力)
- HTML, Javascript(可視化)
- おわりに
- 関連
『シーシュポスの神話』『偶然の音楽』ほか - 2016年3月に読んだ本まとめ
はじめに
「涼風の一過、汗の蒸発、……それと共に消え去る筋肉の存在。……しかし、筋肉はこのときもっとも本質的な働らきをし、人々の信じているあいまいな相対的な存在感覚の世界を、その見えない逞しい歯列で噛み砕き、何ら対象の要らない、一つの透明無比な力の純粋感覚に変えるのである。もはやそこには筋肉すら存在せず、私は透明な光りのような、力の感覚の只中にいた。」
2016年3月に読んだ19冊です。
今月は「海外文学」「評論・エッセイ」「理系っぽい本」の3つに分けて紹介します。いつもと比べて評論が充実していました。
各本について、タイトル・リンク・読書メーターに書いた感想(一部追加・修正あり・非ですます調)の順に記します。気に入った文の引用も。↓↓↓
客の来店する時間間隔が指数分布になる直感的な理由と、分布の導出方法
はじめに
何らかのイベントがランダムに発生する(ポアソン過程という)とき、その発生間隔は「指数分布」という確率分布に従うことが知られています。
例えば、1分あたりに2人の客が来る店においては、来客の時間間隔が平均1/2 [分]の指数分布に従います。
でもどうしてそんな分布になるのでしょうか?
数式をほとんど使わず、ゆるふわな説明によって直感的に理解してみましょう。
後半ではもう少し真面目になり、発生間隔が厳密に指数分布になることを示します。
実は、「ランダムなイベントの発生はポアソン過程と呼ばれ、その発生頻度はポアソン分布に従う」ことを知らずとも、「イベントの発生の仕方が時間的に一様である」という条件だけから指数分布が導けてしまうのです!
統計の教科書にもあまり書かれていないことが多いので、ここに紹介します。
名曲の楽譜データをMusicXML形式で入手し、プログラムで可視化する方法
はじめに
様々な曲の楽譜をデータとして扱えたら楽しそうだと思いませんか?
かといって手動で入力するのも大変です。どこかでダウンロードできると嬉しい…
調べてみたところ、クラシック音楽の楽譜データの多くがCC Zeroライセンスで公開されていることが分かりました。この記事では、
- 好きな曲の楽譜データを検索・ダウンロードする方法
- 楽譜データのファイル形式・解析方法
- Pythonを使って楽譜データをプログラム中の配列として取り込む方法
- 取り込んだ楽譜データをグラフで可視化する方法
を紹介しています。
目次
- はじめに
- MusicXMLファイルのダウンロード
- MusicXMLファイルの展開
- 拡張子を.mxlから.zipに変更
- 解凍
- 確認
- MusicXMLの内容
- どこが重要か
- パートリスト
- パート
- 1. <measure number="1" width="***">:小節
- 2. <attributes>:調・拍子・音符の最小長さを規定
- 3. <note>:音符や休符
- 3. <backup>:時間の巻き戻し
- Pythonプログラムで扱う方法
- おおまかな流れ
- 使う道具
- ソースコード
- 要点
- 完全版
- 今後の活用
- 資料・関連記事