言語

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:…

ディレクトリのepsをpdfに変換する

shellで行います。 ファイル名がepsからpdfに変わったものとして出力させます。 ファイル名を取得して、ループで回します。 for var in `ls *eps` do name=`basename $var .eps` echo $name.pdf epstopdf $var $name.pdf done

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

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

C++エラー: undefined reference to `vtable for ...'

C++でリンクをした際にでたエラーについて class Hogeを作成した際にでてきたエラー // hoge.h class Hoge{ ... public: Hoge() {}; ... virtual void func(); ... virtual ~Hoge(){}; }; のようなクラス定義をした。hoge.cppもこれに合うように作成した。 …

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つの結果が…

Makefileメモ

よく使うMakefileのメモ書き SFMTは乱数生成に使うやつ CC = g++ -std=c++11 OPTION = -I/usr/local/include -L/usr/local/lib -I../modules/SFMT-src-1.5.1 OPTIMIZE = -O3 -fopenmp DIR = ../module TEST = -DSFMT_MEXP=19937 .SECONDEXPANSION: a.out: ma…

macOS update後にうまくgccできないときは

macOSでgccをすると、 ...include-fixed/limits.h:168:61: fatal error: limits.h: No such file or directoryこんな感じのエラーに出会うことがあると思います。 パスがうまく通っていないことが原因です。 解決法 こんな感じ(versionは異なる)のファイル…

テキストファイルで検索したい単語のある行以降を表示

テキストファイルからある単語を検索して、その行以降を表示する方法についてまとめます。 手順は 単語をgrepで検索して行番号だけとる ある行番号以降をtailで表示 1. 単語をgrepで検索して行番号だけとる $ grep -n find_word $file | sed -e 's/:.*//g' 2…

RetinaNetで顔検出

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

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

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

C言語での多次元配列の作成法

以下では例としてdouble型を扱っています。 2次元 mallocを複数かます staticな配列を利用する mallocを複数かます array[N][M]で参照できるようにしたい。 イメージ: まず、N個の長さのポインタの配列をとる。 次に、N*M個の長さのdoubleの配列をとる。 M個…

imshowした時にcolorbarを表示する

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

bashで掛け算

bashで掛け算するには少し注意が必要。 以下の3パターンが考えられるが、少数を計算するときは、awkが一番楽. exprコマンド bcコマンド awkコマンド 整数の計算 exprコマンドでは掛け算の時または括弧には\が必要。 > a=3 > b=6 > expr $a \* $b 18 少数の…

merge sort

アルゴリズム 数列を半分半分に分割していって並び替えたものを作る 順番を揃えつつmergeする 基本はこれだけ。最小分割単位1では何もしないこととmergeするときのアルゴリズムに注意する。 コード例 startはsortするはじめのindexで,endは最後のindex+1に…

実数を2進数表記する

問題 double型の0から1の実数を2進数表記する。 考え方 簡単な例として0.5は2進数では0.1とかける。 つまり、2倍して1のくらいが1になれば1を立てる。 コード例 #include<iostream> #include<string> using namespace std; string bitRep(double x){ string ans = "0."; wh</string></iostream>…

bit演算で値挿入

問題 最大32bit整数N, Mが与えられたときにNのjビット目からiビット目にMを挿入する。 考え方 Nのjからiビットを0に変えて、Mを挿入する 注意 ビットは0から数える。一番右が0ビット目。 コード例 #include<iostream> #include<bitset> using namespace std; unsigned int inse</bitset></iostream>…

sshfs使い方

$ sshfs usrname@hostname:/remote_path/ /local_path/ sshfsでは~を使うとエラーが出る。rootユーザーになるからとか書いてあった気がする。 $ sshfs usrname@hostname:~/remote_path/ /local_path/ fuse: invalid argument `~/remote_path/` のようなエラ…

matplotlibでいい感じで保存する

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

OpenMPでの同じ要素へのアクセス

OpenMPの並列計算で行列の同じ要素にアクセスするときに同時に書き換えるとデータが壊れる可能性がある。 atomicを使うとどれかのスレッドでアクセスしている際にその作業が終わるまで待つようになる。 何度も同じ要素にアクセする際には計算時間が遅くなる…

jupyterでunixコマンド使うときの注意点

パイプで繋げるときは次のコマンドは!いらない。 例として、 !cat temp.txt | wc -l またawkを使うときには注意が必要で、{{, $$にする必要がある。 !cat temp.txt | awk '{{print $$1 " " $$2}}' ほんとはこの出力をそのままnp.loadtxtとかに渡したいけど、…

awkで重複行削除

以下のようなテキストファイルの1列目の値でuniqueな個数を数える。 # sample.txt 41 83 83 186 88 186 989 187 494 210 98 225 以下のコマンドで重複しないで1列目の値だけを表示する。 cat sample.txt | awk `a[$1]++ == 0 {print $1}' 行の数を数えると…

キューの実装

キューは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 …