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の文字列版
文字列として例えば"
string操作の基本
Strings and Character Data in Python – Real Python
にはなかったし、stackoverflowでは内包表記が出動していた
python - find char in
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もあるのかな...名前被ってるのかな...って不安になりました。結論から言うと
- 畳み込み層後のBNは(n_H,n_W)方向にも潰す
- kerasのBatchNormalizationのaxisは、潰さない方向を指定する
という訳でした。
参考URL:
Stackoverflowさまさまです。
はてなブログでコードを表示する
このブログの用途として、コード関連の備忘録にもしたいと思っているので、まずコードをちゃんと載せられるかやってみる。
print('hello world')
できた...!
とりあえずはてなブログでは、html編集モードにして
<pre><code>
print('hello world') (ここにコードを挿入)
</code></pre>
でできました。楽勝だった、めでたしめでたし。