言語-python

RasPi: virtualenvで仮想環境を作る

install これに先立ちpython3.7を入れておく。 pipでvirtualenvを入れる。 なんかいろんなtipsをみる限り、sudoをつける必要あり。どこにinstallされているかわかるように、--verboseをつけておく。 $ sudo pip3 install virtualenv --verbose コマンドとし…

RasPi: python 3.7をいれる

virtualenvでpython3.6を入れたいので、Raspiにpython3.7.2を入れる。 $ sudo apt install libffi-dev libssl-dev openssl $ wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz # 3.7.2をmake $ tar zxvf Python-3.7.2.tgz $ cd Python-3.7.2 …

spike trainのファイルを読み込む

spike時刻がneuronごとに";"区切りで, 縦に並んで記録されている時にデータを読み込む def load_data(filepath, format="list"): """ ;区切りのデータをnumpyで扱える形に読み込む データはlistでここの要素はspike time """ with open(filepath, "r") as f:…

keras: layerの初期化で値代入をする

Kerasでlayerにこちらから指定した初期値を入れて、固定する方法について書いてます。 一度学習したネットワークのconv層のfilterの一部だけを使用したいことがあったのでその時の記録です。 初期値の代入はkeras.initializers.Constant()を利用する。 train…

python: ファイル名を変更する

カメラでとったデータでファイル名が重複していまい困ったことがあったので一括で変換しました。 とりあえず頭文字にaをつけました。 macOSの写真アプリで管理していると、読み込んだ日ごとにdirectoryが生成されるので、同じ名前のファイルがあるとうまく表…

keras: Convolution層に正則化を入れる

Convolution層に正則化を入れるにはいくつかあるようで、説明がすぐに出てこないのでメモ。 Conv1Dのような層の引数には3つの正則化がある kernel_reguralizer: filterのkernelの値に正則化を入れる bias_regularizer: bias項の値に正則化を入れる activity…

randomなone-hotベクトルを作るとき

numpyを使って、 ランダムなデータを作ってそれをonehotにするやり方です。 n_dimはラベルの数。 n_dataは生成するrandomデータの数。 y = np.random.randint(0, n_dim, size=[n_data]) # to one-hot n_labels = len(np.unique(y)) y = np.eye(n_labels)[y] …

Keras: CNNのフィルターをみる時

CNNのフィルターの中身をみる方法 一次元データの時 from tensorflow.keras.layers import Input, Dense, Conv1D, Flatten, Reshape from tensorflow.keras.models import Model n_filter = 10 inputs = Input(shape=(64,)) hidden = Reshape((64, 1))(input…

keras: CNNを使う時のshapeの注意点

例として、1次元のCNNを使う時を取り上げます。 1次元のデータに対して、CNNを使う時にfilter分の次元が増えます。 これの次元の存在をinputを渡す時点で作る必要があります。 input: 100次元のデータ output: 2次元のデータ Function APIで書きます。 (…

python: joblibで並列計算

joblibを使って並列計算するときの例 zipして引数を複数取る時 from joblib import Parallel, delayed def func(a, b): return a * b result = Parallel(n_jobs=-1)([delayed(func)(a, b) for a, b in zip([a_list, b_list])]) result[i]に1つ1つの結果が…

RetinaNetで顔検出

前回(写真の人の顔に自動的にぼかしを入れる (OpenCV) - 情報関連の備忘録)opencvでは満足のいくdetectが出来なかったので、DNNでごり押しします。 kerasを使ってretinanetを利用します。学習に使うデータはすでにアノテーションされているものを利用します…

写真の人の顔に自動的にぼかしを入れる (OpenCV)

目標 1. jpgで画像を読み込み 2. OpenCVで顔を認識 3. そのエリアにぼかしを入れる。適当に平滑化する 完成したコード 補足: RAWデータを直接扱う時 参考 目標 たくさん写真があって他人が写っているとSNSにはあげられないので、ぼかしを入れることが多いと…

imshowした時にcolorbarを表示する

matplotlib.pyplotで2次元の行列をax.imshowすると画像になります。この時に、colorbarを表示する時には、plt.colorbarではダメです。 colorbarの表示 ax.imshow()した時のオブジェクトが必要になります。imに入れています。 Xは二次元の行列です。値は規格…

matplotlibでいい感じで保存する

余白をなくしたいとき 以下のように保存すると余計な余白が消える。 fig = plt.figure() ax = fug.add_subplot(111) # 略 plt.savefig("sample.pdf", bbox_inches="tight", pad_inches=0.05) 論文用にデータをプロットするとき plt.rcParams['mathtext.fonts…

キューの実装

キューはFIFO(先入れ先出し)のデータ構造です。 キューがもつ操作は add(item):要素を追加する remove():先頭の要素を削除する peek(): 先頭の要素を返す isEmpty(): キューが空の場合にTure class Queue(): class Node(): def __init__(self, data): se…

リストの分割

問題 連結リストとある値xが与えられたときにxの前にxよりも小さい値が、後にxよりも大きい値が来るようにする。 考え方 xよりも小さい数のリストと大きい数のリストを作り、最後にくっつける。 時間計算量はO(N) コード例 import random class Node(): def …

間の要素の削除

問題 間のnodeだけ与えられたときにそれを削除する 考え方 削除したいnodeが次のnodeに当たるように書き換えれば良い コード例 class Node(): def __init__(self, d): self.data = d self.next = None def appendToTail(self, d): end = Node(d) n = self wh…

スタック

スタックの実装です。 スタックのデータ構造はLIFO(後入れ先出し)です。 スタックは以下の操作ができます。 pop: スタックの一番上のデータを削除する push: スタックの一番上にデータを追加する peek: スタックの一番上の要素を返す isEmpty: スタックが…

経路探索

問題 r行c列のグリッドに障害物がいくつかある。左上から右下にいく経路を探索する。ただし、動ける方向は右と下のみ。 考え方 グリッド (i,j)にたどり着けるかどうかをTrue or Falseで格納する。flg[i][j]は左側flg[i][j-1]と上側flg[i-1][j]を見れば到達で…

Kerasメモリ制限

KerasでbackendにTensorlfowを使っていると、GPUメモリを全て食ってしまう。 Kerasのバックエンドに使っているTensoflowに設定を加える。 tf.ConfigProtoで設定を加えたら好きなように制限できる。 以下の設定だと必要な分だけ確保してくれる。 import tenso…

3. 木構造の実装

問題 Given the root to a binary tree, implement serialize(root), which serializes the tree into a string, and deserialize(s), which deserializes the string back into the tree. 実装 再帰的に実装します。Noneでなければ展開するようにしています…