PyPI でバージョン番号を変えず内容を変える

PyPI では、アップロードしたファイルを消すことが出来ても、置き換えることはできない。従って、あるバージョンでアップロードしてしまった後、そこにミスが発覚した場合、再アップロードして置き換えることは不可能である。 www.reddit.com ・・・というの…

「GNU開発ツール」を読んだのでビルド工程をマニュアル操作で進めてみる

www.oversea-pub.com 書籍に従いつつ手を動かしてみた時のメモ書き。gcc のバージョンの違いに注意して進めて行きます。 $ gcc -dumpversion 4.8 プリプロセス C 言語ソース (.c) → 前処理済み C 言語ソース (.i) $ cat hello.c #include <stdio.h> int main() { prin</stdio.h>…

mypy のソースコードをちょっと読んだメモ

mypy は Python の型アノテーションを元に静的な型チェックを行うライブラリ。型推論を行い返り値の型などもチェックする。 Pythonではじまる、型のある世界 - Qiita mypyやっていくぞ - Qiita [翻訳] Python の静的型、すごい mypy! - Qiita 起動からアルゴ…

Numba のコードをちょっと読んだメモ

Numba は LLVM を使って Python のコードを JIT するライブラリ。 ちゃんと速い。https://gist.github.com/iwiwi/9228787711a353e115ffcdee21f1a882 @jit からコンパイル部分に到達するまで @jit → decorators._jit → dispatcher というものが返される 適当…

LLVM Tutorial をやったメモ

LLVM Tutorial: Table of Contents — LLVM 5 documentation まだ途中までしかやってないです。Kaleidoscopeという言語の処理系を作っていきます。非常にシンプルな言語です。対話環境で入力されたコードをJITして実行します。 LLVM のバージョンで結構コード…

分散システム 7章「フォールトトレラント性」

部分的な障害の発生は単体システムでは起こらない分散システムの問題である フォールトトレラント性の導入 基本概念 高信頼性とは: 可用性 (availability)・・・ある瞬間に正常に稼働している確率 信頼性 (reliability)・・・障害を起こすことなくジョブが…

BLAS, LINPACK, LAPACK

BLAS とは ベクトルと行列に関する積や和などの基本的な操作を提供するライブラリのことっぽい。機能はレベルに分類されるらしい。 Level 1:ベクトル演算 Level 2:行列ベクトル演算 Level 3:行列同士の演算 有名な操作として GEMM (ジェム)がある。GEMM…

C++ を Python から呼ぶ方法まとめ

C API ctypes cffi Cython pybind11 Boost.Python SWIG

空のプロジェクトを PyPI に登録するまで

プロジェクトの名前を決めたらまずは PyPI で名前を予約しましょう。 PyPI にユーザ登録する TestPyPI というお試しサイトにも登録しよう。 https://pypi.python.org/pypi https://testpypi.python.org/pypi ~/.pypirc を作る パスワードを書かないでおくと…

apt パッケージ探偵をするときに使うコマンド

会社のバイアリアン(?)の人の問題解決が僕の10倍ぐらい速い。僕も少しずつでもコマンドを覚えていきたい。apt-cache show cuda-drivers apt-cache depends cuda-driversdpkg -l | grep nvidia dpkg -l | grep cudaapt-get changelog cuda-8-0 apt-get dow…

CNN による画像分類で使われる前処理・テスト時処理まとめ

とりあえず ImageNet 系の論文で、目に入ったものから順々にまとめていきます。情報・ツッコミ歓迎。 前処理・Data Augmentation Mean Subtraction 入力画像から平均を引く。[103.939, 116.779, 123.68] を各ピクセルから引く。VGG はこれ。 Per-pixel Mean …

スヌープモードを設定して QPI を爆速で超える

スヌープモードの影響 マルチ CPU のマシンでメモリ帯域を測ると、別ソケット側のメモリとの帯域が死ぬほど遅いという現象がある。これは、CPU のスヌープモードがデフォルトの「Early Snoop」になっているからである。BIOS からこれを「Home Snoop」に変更…

数列の和を計算するアルゴリズム

数列の和の計算にアルゴリズムなんて考える余地はあるのか?と思ったが、誤差についても考える場合、単純な方法以外にも複数のアルゴリズムが存在し使われているということを教えてもらった。 Kahan summation algorithm - Wikipedia Pairwise summation - W…

Cython の落とし穴

ポインタを使ってあれこれしたいときの落とし穴を会社で教えてもらった。 numpy の ndarray.data の挙動が型を指定するかによって変わる tutorials NumpyPointerToC · cython/cython Wiki · GitHubここに書かれた方法2でポインタを取り出したい時、引数の型…

Regularized Greedy Forest (RGF) のロス関数をカスタマイズする

Regularized greedy forest (RGF) in C++RGF の公式実装のロス関数をカスタマイズするには、C++ のコードを直接書き換えることになる。とはいえそんなに難しくない。以下の方法がお手軽。 src/comm/AzLoss.cpp を開く AzLoss::getLosses 関数に loss_type ==…

malloc にわざと失敗させる

#define _GNU_SOURCE #include <dlfcn.h> #include <stddef.h> #include <stdlib.h> #include <stdio.h> #include <assert.h> typedef void* (*malloc_t)(size_t); static malloc_t libc_malloc = NULL; static unsigned long malloc_max_called = 1000 * 1000; void initialize() { libc_malloc = (malloc_t)</assert.h></stdio.h></stdlib.h></stddef.h></dlfcn.h>…

機械学習アルゴリズムの直感を養えるデモ・記事

発見次第更新予定 デモ Neural Network A Neural Network Playground Classification with NEAT Gradient Boosting Gradient Boosting explained [demonstration] Gradient Boosting Interactive Playground t-SNE How to Use t-SNE Effectively — Distill …

NIPS のヤバいプロモーションビデオ

www.youtube.com音を出して観るべき。

Python の処理系

2016-10-20 13:00:05 +0900 pic.twitter.com/0ZMU4A2Fu4— 今日のひとことbot (@hitokoto_lab) 2016年10月20日 Pysco Pyjion Nuitka Skulpt

Chainerを明示的にCUDA無しを指定してインストールする

python setup.py --cupy-no-cuda install github.comnvvp とか使いたさに中途半端に手元のマシンに CUDA を入れているとこういう指定が必要になる。

Deep Learning のデバッグ

ミニバッチ化時にミスることが多いので、以下のようなことをすると良いらしい。 データごとの計算を書いてみて、1 つずつ計算したものと照合する ミニバッチサイズを 1 にして計算したものの和or平均とミニバッチで計算したものを比較する

numpy の行列乗算:matmul, dot, @

stackoverflow.com dot と matmul 2 次元では完全に同一。3 次元以上では異なる挙動をする。 dot は a の最後の軸と b の最後から 2 番目の軸を掛け合わせる matmul は行列の配列だとみなして行列積を計算する @ 演算子 Python 3.5 以降では @ 演算子や @= …

t-SNE の実装はどれを使うべきなのか?

scikit-learn の問題点 scikit-learn 信者としてはとりあえず scikit-learn の実装を使いたくなるが、scikit-learn の実装はおすすめできないらしい。 -https://www.red dit.com/r/MachineLearning/comments/47kf7w/scikitlearn_tsne_implementation/ (はて…

バイナリ探偵をする時に使うコマンド

共有ライブラリ編 env | grep LD md5sum 一致してるものを調べる ls -l シンボリックリンクを調べる readelf -a hogehoge.so readelf -a hogehoge.so | grep SONAME SONAME を調べる find build/ -name '*so' | xargs ldd | less 依存関係を調べる ldd `whic…

Python のデータ並列な処理を早くするやつ

numexpr github.com numba Numba — Numba

CPU でいい感じと噂の NN フレームワーク

autograd(微分可能 numpy) github.com pyCNN github.comCNN とは convolutional neural network ではなく C++ neural network

NN フレームワークのベンチマーク

convnet benchmarks github.comconvnet (CNN) の実行速度のベンチマーク比較表。これを見ると意外と chainer はかなり良い位置につけている。cuDNN が速い。 DeepMark github.com

iperfでネットワークの速度を測る

サーバ起動$ iperf -sクライアント$ iperf -c

PyCharmを使いこなしたい

shift 2回押し:search everywhere alt+enter:警告が出ているところで修復(自動import、initでself.hogeにコピー) command+shift+A:ランチャー的なモノ起動 F1:quick documentation Shift+F1:external documentation(ブラウザ) Command+B:定義に飛…

MSR Initialization

wscaleに√2を与える