pythonで全アルファベットのリストを作る


    >>> import string
    >>> list(string.ascii_uppercase)
    ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']

stringという標準ライブラリは何かとお世話になり得ますね。どんなことができるかは、


    help(string)

と聞くとpythonが教えてくれます。


    print([chr(ord('a')+i) for i in range(26)])

でやってもいけました。

np.argwhereの文字列版

文字列として例えば"ooottat"を受け取った時、文字"o"のindexを返すような文字列操作がありそうでなかった(多分

string操作の基本

Strings and Character Data in Python – Real Python

にはなかったし、stackoverflowでは内包表記が出動していた

python - find char in string - can I get all indexes? - Stack Overflow


    def find(s, ch):
         return [i for i, ltr in enumerate(s) if ltr == ch]

洗練されすぎててよくわからないやつね...

宿題:内包表記とenumerateを調べてこの記事をアップデートする

畳み込みニューラルネットワークでのbatch normalizationの軸

Andrew Ng先生によるdeep learning講座の中で遭遇した問題

 

m : バッチのサンプル数

(n_H,n_W) : 縦横のセルの数

n_C : チャンネル数


    X.shape = (m,n_H,n_W,n_C)

という形のテンソル畳み込み層から受け取って、activationに放り込む前にbatch normalization(以下BN)をするのですが、normalizationは当然axis=0で行われるものと思っていたら


    # CONV -> BN -> RELU Block applied to X
    X = Conv2D(32, (7, 7), strides = (1, 1), name = 'conv0')(X)
    X = BatchNormalization(axis = 3, name = 'bn0')(X)
    X = Activation('relu')(X)

え、チャンネル方向にとるんですか...!?ってなりました。

そういうBNもあるのかな...名前被ってるのかな...って不安になりました。結論から言うと

  1. 畳み込み層後のBNは(n_H,n_W)方向にも潰す
  2. kerasのBatchNormalizationのaxisは、潰さない方向を指定する

という訳でした。

参考URL:

 

stackoverflow.com

 

stackoverflow.com

Stackoverflowさまさまです。

はてなブログでコードを表示する

このブログの用途として、コード関連の備忘録にもしたいと思っているので、まずコードをちゃんと載せられるかやってみる。


print('hello world')

できた...!

とりあえずはてなブログでは、html編集モードにして

<pre><code>
print('hello world') (ここにコードを挿入)
</code></pre>

でできました。楽勝だった、めでたしめでたし。