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

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

RetinaNetで顔検出

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

GMMと変分ベイズ

GMM導入 - 情報関連の備忘録 と GMMとEMアルゴリズム - 情報関連の備忘録 から引き続きの話題です。 EMアルゴリズムで推定した時のモデル化では、混合されているガウス分布の個数を固定して推定をしました。 しかし、実際には事前に個数が予測できないことの…

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

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

GMMとEMアルゴリズム

前回GMM(Gaussian Mixture Model)の形について取り上げましたが(GMM導入 - 情報関連の備忘録)、今回はパラメーターの推定方法について取り上げます。 EMアルゴリズムを用いてパラメーターの最適化を行います。 EM algorithm EM algorithm for GMM E step of …

GMM導入

混合ガウス分布(Gaussian Mixture Model, GMM)は文字通り複数のガウス分布で構成されているモデルです。 具体的には以下のような2次元のデータを考えてみれば良いです。 これを3つのガウス分布からできると考えてモデル化すればGMMです。 このモデルの目標…

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

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

Linuxでpyenv環境の作成

目標 Linux上でのpython環境を作ります。version管理がしやすいので、pyenvを使用してanacondaを入れます。 具体的に作業したディストリビューションはCentOS7ですが、Unix環境ならだいたい同じかと思います。 手順は 1. pyenvのinstall おまけ: pyenvのupgr…

MNISTのresize

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

imshowした時にcolorbarを表示する

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

backup作成

外付けHDDにデータのbackupを取るときのメモです。macOSでの作業です。 directoryの同期 新しいHDDを買ったので、全てのディレクトリを丸ごと同期させときます。 $ rsync -av original-path backup-path 外付けHDDから別の外付けHDDにコピーしたのですが、ma…

Raspberry Piをサーバーにする

Raspberry Piにいくつかのサーバー機能を持たせた時の記録です。 家にVPNを張りたくて始めた作業です。 1. sshできるようにする 2. ルーターのログを記録する 3. DNS severにする 3.1 必要なツールを入れる 3.2 dnsmasqの設定ファイルを書く 3.3 名前の登録 …

bashで掛け算

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

macOSにリモート接続する

家のmacOSに外部から接続できるようにした際の手順をまとめます。 OSはMojaveです。 ルーターはbuffaloのやつ。 1. macOSでリモートアクセスを許可する 2. global ipの設定 3. ルーターの設定 4. セキュリティ用の設定 4.1 ログインを共通鍵認証のみにする 4…

使用port確認

jupyterをいくつか立てているときにどのportがすでに使用されているか確認するときにでも $ netstat -tan | awk '{print $4}' | grep 0.0.0.0:

Termius設定

iosからサーバーにsshできるようにするためにTermius(Termius)っていうアプリを使ってみました。 キーボードが打ちにくいのであんまり使うことはないとは思いますが、wifi環境がないところでもiphoneから接続できるので便利です。 まず、Termiusのアカウン…

16. storing data log

Problem You run an e-commerce website and want to record the last N order ids in a log. Implement a data structure to accomplish this, with the following API: record(order_id): adds the order_id to the log get_last(i): gets the i-th last e…

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…

jupyterを開く時に出るエラーについて

Traceback (most recent call last): File "/home/usrname/.pyenv/versions/anaconda3-2019.03/lib/python3.7/site-packages/traitlets/traitlets.py", line 528, in get value = obj._trait_values[self.name] KeyError: 'runtime_dir' During handling of …

jupyterでkernel選択

conda等で複数の仮想環境を入れているときにjupyterでkernelを入れ替えたい 現在利用可能なkernelの確認 $ jupyter kernelspec list Available kernels: tensorflow /home/username/.local/share/jupyter/kernels/tensorflow tensorflow2 /home/username/.lo…

CentOS installからCUDA installまで

CentOS7.6を入れて、CUDAの環境を作るまでをまとめました。 1. CentOSを入れる CentOSの初期設定 2. NVIDIA driverのインストール 2.1 nouveauの無効化 2.2 NVIDIA-Linux-***-runのinstall uninstallするときは 注意 補足:パッケージマネージャーの使用 3 c…

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

pgi, iccコンパイルオプション

混乱するのでまとめました。 PGI 使い方 参考サイト 公式ページ その他 Intel Compiler 使い方 メモ 参考サイト その他 一般的なこと PGI 使い方 openmpで並列化するときはとりあえずはこれでいいはず。 でも、なぜか-mp指定しなくてもOpenMPのコンパイルが…

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}' 行の数を数えると…