MNIST,CNNとかのお勉強
MNIST for expertで機械学習のお勉強中、
わからない単語を以下にメモします。
下の二つが参考文献です。
- 畳み込み(Convolution)
画像から、特徴量を抽出すること、
(画像をシャープにしたり、ぼかしたり色々、フィルタリングとも呼ぶ)
MNIST for expert のチュートリアルでは、
1枚の画像に対して、複数のフィルターをかませて、複数の特徴量を抽出している。
- プーリング
画素数を削減すること。
元画像は28×28ピクセル。
この画像に例えば2つのフィルターをかませると、
それぞれのフィルターに対応した画像が作成されるので、
2×28×28のデータ容量となる。
データ容量削減したいので、2×14×14と圧縮する。
また、
フィルタリング後の画像データ28×28は、14×14に圧縮されると、
特徴量がより際立つデータとなる。
(圧縮時、ノイズ成分がより圧縮されるイメージ?こっちの方がプーリングの主目的?)
MNIST for expert では、畳み込み、プーリングを2段構成にしています。
1段目の32枚のフィルターそれぞれに対して、
2段目のフィルターを1つかけ、足し合わせます。
続いて
1段目の32枚のフィルターそれぞれに対して、
2段目のフィルターを1つ(上のとは別のフィルター)をかけ、足し合わせます。
以下繰り返しです。
バックプロパゲーションにより、
このフィルタ、プーリングの仕方を最適にし、正解率を向上させます
jupyternote book でグラフが外部表示されない。
jupyternote book でグラフが外部表示されない。
%matplotlib inlineではなくて、
%matplotlib
と明示してあげると外部出力できた。
pycharmショートカット覚書
pycharmショートカット覚書
少しずつ追加していきます。
よく使うショートカット
https://pleiades.io/sites/willbrains.jp/keymap/pdf/shortcut_pycharm_mac.pdf
pythonサブクラスのコンストラクタ定義時の注意点(親クラスのコンストラクタが上書きしないように)
class B: """ 親クラス """ def __init__(self) -> None: self.x = 10 class D(B): """ サブクラス2 自分の __init__ を定義しているが super().__init__() を呼んでいないバージョン """ # noinspection PyMissingConstructor def __init__(self): self.y = 20
これで、コンストラを呼び出してみます。
obj2 = D() print(obj2.x) print(obj2.y)
出力は
AttributeError("'D' object has no attribute 'x'",)
となります。
→親クラスのコンストラクタがオーバーライドされてしまったせいです。
これを防ぐためには、サブクラス定義時に、
class E(B): """ サブクラス3 自分の __init__ を定義していて super().__init__() も呼んでいるバージョン """ def __init__(self): super().__init__() self.y = 20
とする必要があります。
以下参考
書評(オブジェクト指向でなぜつくるのか)
簡単にまとめていく
著作権的なやつにひっかかると嫌なので、かなり殴り書きです。
オブジェクト指向って何?
ソフトウェア開発、保守を楽にするための技術、
オブジェクト指向より前の言語で、ダメな部分
・コードの再利用が、共通サブルーチンの再利用のみ、
・ローカル変数の使用範囲がサブルーチン内のため、
それ以上、範囲を広くする必要がある変数は、グローバル変数を使う必要がある。
グローバル変数は、バグを生みやすいため、なるべく使いたくない。
オブジェクト指向でできること、
・ポリモーフィズム
→共通メインルーチンの仕組み
・サブルーチンより外の範囲で使用可能な変数(インスタンス変数)、
使用範囲はクラス内で、複数のサブルーチンからアクセス可能、
インスタンス変数とメソッドが結びついている、他のメソッドから(通常は)参照できない(しないようにする)。
あとは、コードの書く量を減らせる技術
・一つのクラスから、たくさんのインスタンスを作成できる。
・継承
→重複した内容(メソッド)をまとめる、
何がそれを可能にしている?
・メモリの使い方
クラスの簡単な説明は以下
Pythonでクラスを継承する | UX MILK
書評(readable code)
*readable codeを読みました
コードレビュー等を受けたことがない方は、
一度読んで見たら良いかと思います。
日本語訳を出てるみたいですけど、
原著の方を読みました。
(理由は詳しくは書けませんが、そういうことです)
中身を書くと、
色々とひっかかりそうなので書きませんが。。。
以下は別の方の感想です。
【読書感想文】リーダブルコード メモその1 - 16bit!
リーダブルコードに共感出来ない人とは一緒にコーディングしたくない - ぼっち勉強会
時間が空いたらもう一度読もうと思います。