post
PyTorchとメモリ
· ☕ 1 min read
必要なメモリ量 必要メモリ量(byte) = (ニューロンの数 × Batch Size + パラメータ数) × 2 (data & grad) × 4(byte) https://nori-life-log.com/nnの学習で必要なgpuメモリを算出する 重みを固定(freeze) 1 2 3 # freeze all layers for param in model.parameters(): param.requires_grad = False ...

np.float32
· ☕ 1 min read
pythonのfloatはCでいうdouble np.float32はCのfloatと同じ 一方, np.float64はpythonのfloat float in Py == double in C == np.float64 == 8バイト np.float32 === float in C == 4バイト ...

標準化
· ☕ 1 min read
訓練セットの分散、平均、最大値、最小値などの情報を使ってテストセットを変換する ...

DatasetGAN
· ☕ 1 min read
GANによって生成した画像に対して、自動的にアノテーションを付与するネットワークを学習する点が新しい。StyleGANの特徴量は、アノテーションを生成するために十分な情報を持っているという仮説に基づき、シンプルなネットワークでそれを実現できることを示している。 ...

SBERT-WK
· ☕ 1 min read
BERT, Sentence BERT は各層における単語の分散に着目していない 「各単語の各層での埋め込み表現がどの程度の分散を持つか」を調べる 以後, 分散=**各層でのばらつき **なので注意 ↓ can, wouldのような意味の少ない単語だと分散が小さいが, 意味が多い単語だと分散が大きい この問題に対応するために, 各層に対して重み付け和を取ったものを新たな埋め込み ...


einsum
· ☕ 1 min read
アインシュタインの縮約記法 テンソル積を書くと大量の $\Sigma$が出てきてうざい なので, $\Sigma$を省略しよう, というのが事の始まり $\sum_{j} a_{i,j}b_{j,k}$ なら ij,jk → ik プログラム的に考えれば, 単純にfor を外しただけ 例えば ドット積 z[i,j](https://scrapbox.io/yuwd/i%2Cj) += x[i,j](https://scrapbox.io/yuwd/i%2Cj) * y[i,j](https://scrapbox.io/yuwd/i%2Cj) np.einsum("ij,ij->ij", x, y) 内積 z[j,k](https://scrapbox.io/yuwd/j%2Ck) += x[j,i](https://scrapbox.io/yuwd/j%2Ci) * y[i,k](https://scrapbox.io/yuwd/i%2Ck) np.einsum("ji,ik->jk", x, y) 軸の入れ替えなどでも使える y = torch.einsum('nchw->nhwc', y).detach().cpu() 実際は遅いからやめたほうが良さそう ...

world_size
· ☕ 1 min read
world_size プロセス数 rank どのプロセスなのかを指定 ...

権威DNSサーバ
· ☕ 1 min read
自分の担当するドメインについて名前解決してくれるDNSサーバ 一方で, 他のDNSサーバなどを辿って名前解決してくれるやつはキャッシュDNSサーバ とも呼ばれる herokuとかでサブドメインのURL持てたりするけど, 自前でDNSサーバを設定してるって感じなのかな? ...