KZKY memo

自分用メモ.

python

Comparison between Multiprocessing and Multithreading in Python

Comparison between Multiprocessing and Multithreading in Python See github.com

GAN: Generative Adversarial Network

前からやってたかったのでGANをやってみた.GANGANの学習は非常難しいのが率直な感想.生成画像がかなりブラー.

Python Shared Memory

データリードがボトルネックになる時があるので,IPC経由でデータを渡す場合とSharedMemory経由でデータを渡す場合で比較してみた.Shared Memory for Data Storage

Cython with nogil

Cythonでgilを外せるので外したときにどれくらい高速化されるのかを見てみた.Cython with nogilThread + Cython (nogil)が一番良いと思う.

Chainer (1.12.0)をさわってみた

わけあって,Chainerを触らなくてはならなくなった,再び触ってみた. Installation 環境 Chainer: 1.12 OS: Ubuntu15.04 CUDA: 7.5 Compiler: cpp-4.9, g++-4.9, gcc-4.9, cc-4.9 cudnn: v5 CUDA7.5の場合,gcc4.9を使わないとならないようなので注意. ま…

Computational Graphの実装概要

TF, CNTK, Theano, Caffe, Chainer等,巷にDNNライブラリはあふれている.DNNライブラリとはいかないまでも,自分でComputational Graphを実装してみたいと前から思っていたので,書いてみた.インターフェイスとしてすら,まだ全部出来ているわけではない.…

TensorFlow: Sequence-to-Sequence Models

sequence 2 sequenceの学習の話.この記事を書いている時点で,TFのversionは,0.6.データのダウンロード cd tensorflow/models/rnn/translate python translate.py --data_dir [your_data_directory] で,English to Frenchのデータセットのダウンロードが…

TensorFlow: Python API: Transformation

記事を書いている時点では,v6.0なので注意 Casting tf.string_to_number tf.to_double tf.to_float tf.to_bfloat16 tf.to_int32 tf.to_int64 tf.cast 特に言及なし.sample codes Shapes and Shaping tf.shape tf.size tf.rank tf.reshape tf.squeeze tf.ex…

TensorFlow: Python API: Constants Sequences and Random Values

記事を書いている時点では,v6.0なので注意 Constant Value Tensors tf.zeros tf.zeros_like tf.ones tf.ones_like tf.fill tf.constant 特に注意点なしsample code Sequences tf.linspace tf.range 特に注意点なしsample code Random Tensors tf.random_nor…

TensorFlow: Python API: Math

基本element-wise.記事を書いている時点では,v6.0なので注意 Arithmetic Operators tf.add tf.sub tf.mul tf.div tf.truediv tf.floordiv tf.mod 特に注意点はなし.sample codes Basic Math Functions tf.add_n tf.abs tf.neg tf.sign tf.inv tf.square t…

Theano: Scan Op

現時点でTheano(0.7.0).いまさらながら,scan opをちゃんと見てみることにした.scan opのいいところは,variable length input/outputに対応できること,および,loopの中に,symbolに対してconditionを付けられること.基本的に,このページを順に見てい…

Celery with Multiprocessing and SQLAlchemy

celeryでMultiprocessingをするときにどういう挙動をするのか気になったので,調査. 1. 普通にMultiprocessing 2. SQLAlchemyでsessionを作ってから,Multiprocessing を検証する.1のコードはここ 2のコードはここ 普通にMultiprocessing AssertionError: …

TensorFlow: Control Dependency

Contol Dependencyをさわってみた結論からいうと,cpu上でやるif, thenみたいな細かいflow制御というより,あるTensorと別のあるTensorの値をelement-wiseで比較して,大きい方をとるみたいな感じで使う. サンプル #!/usr/bin/env python import numpy as n…

TensorFlow: tf.get_colleciton()とtf.add_to_collection()

なぞのメソッドtf.get_collection()とtf.get_to_collection()を調べた.API時には, tf.Graph.get_collection(name, scope=None)Returns a list of values in the collection with the given name. Args: key: The key for the collection. For example, the…

TensorFlow: Graphをもう少し理解

Graphをもう少し理解する. Default graph Create another graph in this thread (main thread) Graph in multi thread Write graph as protbuf to disk Read graph from disk and to Graph の5通りのサンプル.チェックポイントからの復帰はやってない.チェ…

TensorFlow: Recurrent Neural Networks

Introduction まず,LSTM articleを読んだほうがいい.わかりやすいので読んだほうがいい.rnn_cell.pyを見ると, BasicRNNCell: 普通のRNN BasicLSTMCell: peep-holeがないLSTM LSTMCell: peep-holeがあるLSTM. さらに,cell clippingとprojection layerがo…

TensorFlow: Vector Representations of Words

word2vec modelの例.word embeddingsていう単語のベクトル表現に使用するembedding matrixを学習で求めるモデル. Highlights WordをVectorとして表現したい動機 modelの直感的解釈とどうやって訓練するか TFでどうやってやるか Scaleさせるやり方 Motivati…

TensorFlow: Convolutional Neural Networks

Overview CIFAR10を使ってCNNおよびmulti-gpuでCNNをするサンプル. CIFAR10データセットは,32x32pixelのカラー 画像で,クラスは10クラスある.大体まとめると. #classes 10 #samples/class 6000 #train samples 50000 #test samples 10000 Goals DNNのア…

TensorFlow: Deep MNIST for Experts

ここではinteractive sessionでCNNを書くチュートリアル. Setup Load MNIST Data git clone https://github.com/tensorflow/tensorflow.git してきて,ここに移動. cd tensorflow/tensorflow/examples/tutorials/mnist こんな感じでmnistデータを読み込み …

Tensor Flow: How To

この記事を書いている時点では,0.6.0が最新なので,それを参考にまとめている. Variables: Creation, Initializing, Saving, and Restoring Variableはin-memory buffferだからtrainingが終わっったら,永続化させてevalutionとかしたい. The tf.Variable…

Python: ZeroMQ2

基本パターン req/res: server/client (server-client blocking, a client can connect to many servers) pub/sub: broadcast (non reliable publish) push/pull: loadbalancing は以前やった kzky.hatenablog.com ので,Intermediaries and Proxiesを学べば…

Python: ZeroMQ

基本 メッセージパッシングフレームワーク or メッセージキューフレームワークの一種. これらはOSSでいっぱいあり,メッセージブローカーがあるbrokerd, メッセージブローカーがいないbrokerlessに大まかに分類される.ZeroMQはbrokerlessに分類される.ア…

Python: TCP Server

基本 Cのsokcet programmingとほとんど同じ Server側 create socket bind socket to (host, port) socket listens with qsize socket accepts connection socket recv msg from a client socket send msg to a client Client側 create socket socket connect…

Python: Manager

基本 何ができるか Manager は別のプロセス間で共有されるデータの作成方法を提供します。マネージャオブジェクトは 共有オブジェクト を管理するサーバプロセスを制御します。他のプロセスはプロキシ経由で共有オブジェクトへアクセスすることができます。 …

TensorFlow: Getting Started

Basic Usage Install cuda 7.0 (gpu使いたい場合) $ wget "http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_7.0-28_amd64.deb" $ sudo dpkg -i cuda-repo-ubuntu1404_7.0-28_amd64.deb $ sudo apt-get upd…

Hello TensorFlow

TensorFlow Googleが出したFlow Graph or Computational Graph 上で数値計算を行えるOSS. 本命どこがOSSでだしてきた.界隈ではゲームのルールが変わるかも. 何ができるか 一般的なDeep Learning Multi Layer Perceptron Convolutional Neural Networks Vec…

PythonにおけるShared Memory

前提 pythonはGILの影響でmulti thread programmingでcpu-bound jobが早くならない. なので,multiprocessingを使うしかない.CPythonのmultiprocessingはforkなので,unixならcopy-on-write.なので,globで定義したデータなら,Read-onlyに限り,特段気に…

Flask-Restful

基本 flaskのみだと if request.method == "GET": ... な感じで,HTTP Methodと振る舞いを対応付けるが,これをやってくれるのが,Flask-RESTful. Resourceクラスを拡張したクラスとURL Routingを書いてそれらを紐付ける. Basic Sample Code from flask imp…

Flask: Bluprint Static Page

Flaskで少し大きめのWebアプリケーションを作るときは,Blueprintを使うのが普通.でも webpage = Blueprint('webpage', __name__, url_prefix='/web') ... @webpage.route("/<path:filename>") def top(filename): return app.send_static_file(filename) な感じ書くと500</path:filename>…

Read Comparison with pickle vs npy vs mat vs hdf5 format

各種フォーマット pickle npy mat hdf5 におけるReadの比較を行ったのでそれをレポート 環境 OS Ubuntu14.04 CPU Intel(R) Core(TM) i5-2540M CPU @ 2.60GHz Disk Hitachi HTS54756 FS ext4 データ 元Data cifer10 (obtained from Kaggle so that it is jpeg…

python: multiprocessing 2

前回zipfileのunzipをpythonのmultithreadingで行って全然早くなっていないことを確認したが, image 2 ndarray pickle 2 ndarray だとどうなるのが調べてみた. pickleはndarray.dumpしたもの. 実験設定と環境 OS Ubuntu14.04 CPU Intel(R) Core(TM) i5-25…

Flask x Celery

次の2つを含んだサンプル Flaskの中からCelery Taskを実行する Celery Taskの中からdbにアクセスする flask_celery.py from celery import Celery from flask import Flask, request, jsonify from flask.ext.login import LoginManager, UserMixin, login_…

Flask-Login x Flask-Mongoengine

Flask-Loginを使って Flask-MongoEngineで作成したUser Documentをuser classとして使用する Testや単なるAPIとして,APIを使用したいときに認証回避を可能にする これらをやってみる Sample Code #!/usr/bin/env python from flask import Flask, request, …

Celery: Task Revoke

taskの中断 revokeを使う async_resultにアクセス可能なら,async_result.revoke() idのみわかっているなら,celery.task.control.revoke() worker.py from celery import Celery import time import celeryconfig #app = Celery("tasks", backend="rpc", br…

python: socketio-client

jsからだけではなく,pythonからsocketio serverにリクエストしたい.1. python-socketio-client 2. python-socketio-sever 3. jsという順にメッセージを送りたい 環境 ubuntu 14.04 python 2.7 server: flask-socketio client: python socketio-client Inst…

python: pandas 基本

基本 Rからnumpyに入った人にとってDataFrameがないのは痛い. pythonのlibraryにpandasというのがあって,それでDataFrame-likeなオブジェクトを扱える. データ構造 -------------------------------------------------- Dimensions Name Description ----…

python: Supervisord 基本

Supervisord ClouderaManagerのこれを使用してHadoop Serviceを起動している. subprocessesの管理もできるので分散システムに関しては向いている. 日本語の記事がかなりまとまっているので基本はそれを参考 調べるときは本家を見る Configはini形式 環境 U…

Celery 基本

前提 OS: ubuntu14.04 インストール sudo apt-get install rabbitmq-server python-celery python-celery-doc 基本 celeryはmessage passing framework message brokerを必要とする Broker 選べる RabbitMQ Redis SQLAlchemy, Django Database (not recommen…

Flask-Auth 基本

Pluginの列挙 DIY Flask-Login Flask-Auth FlaskSecurity DIY http://blog.miguelgrinberg.com/post/restful-authentication-with-flask Flask-Login https://blog.openshift.com/use-flask-login-to-add-user-authentication-to-your-python-application/ …

Flask-SocketIO 基本

Installation pip install flask-socketio まずはこちらをやる 短いから WebSocket 基本 Communication protocol in HTML5 Permanent connection Bi-directional communication Either client or server can initiate communication Flask-Socketsとの違い F…

Flask-SQLAlchemy 基本

SQLAlchemyの基本 ORM: Object Relational Mapper DMP: Data Mapper Pattern; classes mapped to a database Quick Start https://pythonhosted.org/Flask-SQLAlchemy/quickstart.html で事たりる hello_sqlalchemy_mysql.py from flask import Flask from f…

Flask基本

Installation 環境 Ubuntu14.04 pip install $ pip install Flask $ python hello.py * Running on http://localhost:5000/ Getting Started Super Basics from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World…

python: pairwise-distance

numpyでfor-loopしながらpairwise distanceを計算すると非常に遅い. pairwise distanceはgram行列のカーネルにrbfを使った時に絶対に出てくるので,高速計算は必須要件. 比較 普通のfor-loop 行列計算ベースで一気に行う方法 numbaで比較する 環境 Ubuntu1…

python: 行列演算の高速化

こことここにinspireされてnumbaを試した. 結論から言うと超早い.ごりごりの数値計算をするなら絶対使うべき. Installation Ubuntu14.04でanacondaは使わない llvm3.5 / llvmlite sudo apt-get install -y llvm3.5* sudo apt-get install -y libedit-dev …

GPU/CPUの計算速度比較 02

ここに載っている一般的なlogistic regressionを解くとき,GPU vs CPUで速度比較したのでその時のメモ. 実験環境 計算リソース GPU: GeForce GTX 780 CPU: Intel(R) Xeon(R) CPU X5680 @ 3.33GHz 実験1 設定 #dims = 784 (固定: same as in sample code) #sa…

GPU/CPUの計算速度比較

全サンプルの内積計算をNumpy (CPU) vs Theano (GPU)で速度比較をした時のメモ.実際のサンプルを書く前に,普通に計算する場合を考える.普通にd-by-nの行列があったら,すべてのサンプルの内積計算の計算量は で,nに関してsquare-order.基本的にこういっ…

Theano BLAS周りのリンクエラー

こんな感じのエラーがでたら /usr/bin/ld: cannot find -lf77blas. collect2: ld \xe3\x81\xaf\xe3\x82\xb9\xe3\x83\x86\xe3\x83\xbc\xe3\x82\xbf\xe3\x82\xb9 1 \xe3\x81\xa7\xe7\xb5\x82\xe4\xba\x86\xe3\x81\x97\xe3\x81\xbe\xe3\x81\x97\xe3\x81\x9f. ',…

Theano: Logistic Regressionまでの道のり

Theanoの基本的シンボル操作から,基本的な微分を経て,Logistic Regressionまでの道のり. 基本 installation ubuntu14.04の場合 $ sudo pip install theano version確認 $ python -c "import theano; print theano.__version__" 0.6.0 import 取りあえずim…

Python: Flake8

Cask経由でflycheckを入れるとsyntax checkerはflake8になっているよう. flake8のデフォルトの設定だと警告を出し過ぎて,目に良くないので抑制する設定. $ vi .config/flake8 [flake8] ignore = E226,E302,E303,E41,C0326,W0621,C0111,C0103,W0702,W0703,…

Ansible まとめ

導入 サーバプロビジョニングにおけるOrchestration/Configurationに相当 chef/capistrano/fabric/pdshに代替可能 冪等性があるが半自動(ユーザがファイルの有無で条件付する)のモジュールもある 基本 host/playbook/moduleで構成される host ini形式でhost…