プログラミング

MCCの計算

この指標は普通は使わない気がする。 class MCC: def conf(self, psp_true, psp_pred): """ psp_true: shape = (n_data, 1) のarrayとして渡す """ #==== epsp ==== y_true = np.ravel(psp_true) y_pred = np.ravel(psp_pred) tp_epsp = (y_true >= 1) & (y_…

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

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

macOS エラーメモ: limits.h: No such file or directory

pythonのモジュールを作成する時にgccでエラーが出て止まった. macOS 10.15.2 anaconda3-5.3.1をpyenvで入れている limits.h: No such file or directory error: command 'gcc' failed with exit status 1 のようなエラー. 原因はXcodeのgccとcondaのgccが入…

ディレクトリの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もこれに合うように作成した。 …

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

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

nvidia-smiエラーメモ

centosを再起動した後にnvidia-smiをすると以下のエラーが出た。 $ nvidia-smi Failed to initialize NVML: Driver/library version mismatch いくつか対応策はあるが以下が助けになった。 Failed to initialize NVML: Driver/library version mismatch - CU…

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

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

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

RetinaNetで顔検出

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

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

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

MNISTのresize

MNSITの次元を落とす時 落とし方には2つあります。 周辺のあたいの平均をとる どのデータでも変化しない必要のないあたいを落とす ここでは、1つ目を考えます。openCVでresizeしてしまいます。 まずはimport しておく。 from tensorflow.python.keras.data…

43. implementing stack

Problem Implement a stack that has the following method. push(val), which pushes an element onto the stack pop(), which pops off and returns the topmost element of the stack. If there are no elements in the stack, then it should throw an e…

merge sort

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

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を使うとどれかのスレッドでアクセスしている際にその作業が終わるまで待つようになる。 何度も同じ要素にアクセする際には計算時間が遅くなる…

キューの実装

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

スタック

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

連結リスト

連結リストの性質 要素の追加と先頭からの要素の削除が一定時間でできます。 k番目の要素にアクセスするにはk回計算が必要になります。 単方向連結リスト pythonでの実装です。 class Node(): def __init__(self, d): self.data = d self.next = None def ap…

Kerasメモリ制限

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

C++エラーメモ

エラー内容 環境:MacOS Mojave 文字列を出力するだけのC++のコードをコンパイル > g++ -std=gnu++11 sample.cpp とすると、以下のwarningが出る warning: section "__textcoal_nt" is deprecated.section __TEXT,__textcoal_nt,coalesced,pure_instructions …