2025-01-01から1年間の記事一覧

Mac で GTAGS for Python & Emacs

自分用メモ brew install global cp /opt/homebrew/share/gtags/gtags.conf ~/.globalrc .globalrcに対して、 common:\ :skip= ... の最後に mypy_cache/,ruff_cache/,*.pyc,venv/: など、タグづけにあたりスキップしたいディレクトリや拡張子を追記 python…

ESPRIT 法による複数正弦波のパラメタ推定と Python 実装

はじめに 前回記事から引き続き、本記事も「正弦波のパラメタ推定シリーズ」である。 今回は、高分解能な周波数推定手法のひとつであるESPRIT (Estimation of Signal Parameters via Rotational Invariance Techniques) アルゴリズムについて解説し、Python …

Intel MKL の Numpy / Scipy で高速化したいとき(pip install)

以下のリポジトリより, github.com このコマンドでインストールする. pip install numpy scipy --extra-index-url https://urob.github.io/numpy-mkl 体感で倍速になった気がする(固有値分解,特異値分解).

pandocを使って数式混じりのmarkdownをpdfに変換する方法(Mac)

Mac でのログ。変換対象のmarkdownはlatexによる数式が混じった文章である(github)。 pandoc はbrewでインストールする Eisvogel のページからテンプレートをダウンロード https://github.com/Wandmalfarbe/pandoc-latex-template/releases テンプレートを…

MUSIC 法による複数正弦波のパラメタ推定と Python 実装

はじめに 本記事は最近のマイブームとなっている「正弦波のパラメタ推定シリーズ」のうちの一つである。 今回は、高分解能な周波数推定手法の一つである MUSIC (MUltiple SIgnal Classification) 法 [1-5] について、2つのバリエーションである spectral-MUS…

Emacsで書いたmarkdownをプレビューする設定

Markdown-modeを前提として,まず,これを書いている. (setq markdown-command "pandoc") pandocコマンドはレンダラとして優秀である.見た目をgithubに近づけたいときは,以下のブログ記事を参考にして,cssファイルを適当な場所において (setq markdown-c…

【Emacs】eglotにプロジェクトのルートディレクトリを認識させるには

Emacsのeglotは,当該のディレクトリに .git があれば、自動的にプロジェクトのルートとして認識してくれる。 これがない場合に、下層のディレクトリにあるファイルは全て、ディレクトリ単位で別プロジェクトとして認識し 、サーバーと接続してしまうので困…

basedpyrightの設定

pyproject.tomlには、最低限こんな感じで書いている。 [tool.basedpyright] typeCheckingMode = "recommended" extraPaths = ["/path/to/site-packages/"] reportAny = "none" reportUnusedCallResult = "none" pythonVersion = "3.13" # for override decor…

SCDEに基づく複数減衰正弦波のパラメタ推定とPython実装

はじめに 前回までの記事で、正弦波制約微分方程式(SCDE)に基づくパラメータ推定法について、その拡張を含めて紹介してきた。これまでのモデルは単一の音源を前提としていたが、多くの実用的な場面では、複数の音源が混在した信号を扱う必要がある。ピアノ…

SCDEに基づく単一減衰正弦波のパラメタ推定とPython実装

はじめに これまでの記事では、正弦波制約微分方程式(SCDE)に基づく周波数推定法と、その拡張を紹介した。特に前回記事では、重み付き最小二乗法(WLS)を導入することで、ノイズ耐性が向上することを確認した。 正弦波制約微分方程式(SCDE)に基づくピッ…

正弦波制約微分方程式(SCDE)に基づくピッチ推定法における重み付き最小二乗法(WLS)の導入

はじめに 過去に正弦波制約微分方程式(SCDE)に基づくピッチ推定法の再現実装に関する記事を書いた。 正弦波制約微分方程式(Sinusoidal Constraint Differential Equation; SCDE)によるピッチ推定法をPythonで実装した - 備忘録 本記事はSCDE法を少しだけ…

有限次数調波拘束微分方程式(FOHCDE)に基づく多重ピッチ推定法のPython実装と再現実験

はじめに 本記事は前々回記事、前回記事の続きである。 従来のピッチ推定手法、特にDFTをベースとする手法では、時間分解能と周波数分解能のトレードオフが本質的な課題であった。短時間の信号から近接した複数の周波数を分離・推定することは依然として困難…

Frequency Estimation Method Using Sinusoidal Constraint Differential Equation (SCDE) and Python Implementation

Introduction Conventional frequency estimation methods like FFT (Fast Fourier Transform) and autocorrelation functions are widely used. However, these methods share a common challenge: it is difficult to accurately estimate the frequency w…

有限次数調波拘束微分方程式(Finite-Order Harmonic Constraint Differential Equation; FOHCDE)に基づく基本周波数推定とPython実装

はじめに 本記事は前回記事の続編である。前回は微分方程式の性質を利用して音の周波数を推定する手法「SCDE(Sinusoidal Constraint Differential Equation)」を紹介した。SCDEは、FFTベースの手法では困難であったわずか数ミリ秒という極めて短い信号から…

正弦波制約微分方程式(Sinusoidal Constraint Differential Equation; SCDE)によるピッチ推定法をPythonで実装した

はじめに 従来のピッチ推定手法として、FFT(高速フーリエ変換)や自己相関関数などが広く使われている。しかし、これらの手法には共通の課題があった。それは、「短い時間(例えば数十ミリ秒)の信号から、複数の音が同時に鳴っている場合のピッチを正確に…

カーネルロジスティック回帰で学習したホップフィールドネットワークのアトラクタ解析に関する論文(プレプリント)を書いた話

はじめに カーネルロジスティック回帰による学習の導入によって、ホップフィールドネットワークの記憶容量が大きく改善されるという主旨の論文を書いていた。それが前回記事の話である。記憶容量の増大に伴い、想起過程に関するアトラクタの挙動がどのように…

ホップフィールドネットワークの記憶容量改善に関する論文(プレプリント)を書いた話:カーネルロジスティック回帰とカーネルリッジ回帰

はじめに 以前の記事にて、ロジスティック回帰とリッジ回帰の学習アルゴリズムによって、Hopfield モデルの記憶容量を改善する試みを紹介した。これらをカーネル法によって拡張することにより、さらなる容量の改善を図ったということ。 論文 現時点で論文は…

ホップフィールドネットワークの記憶容量を改善する試み:リッジ回帰に基づく学習アルゴリズム

はじめに 先日公開した記事では、記憶容量改善の一つのアプローチとして、ロジスティック回帰の枠組みを導入した。そこでは、記憶パタンを {0, 1} の目標値に対応させ、各ニューロンが他のニューロンの状態から自身の状態(0 or 1)を予測する確率をモデル化…

ホップフィールドネットワークの記憶容量を改善する一つの試み:ロジスティック回帰に基づく学習アルゴリズムの実装

はじめに 総ニューロン数に対して約14%を超える記憶パタンを学習させると、Hopfieldモデルはパタンを正確に記憶できなくなり、想起性能が低下する現象が知られている。このニューロン数に対する記憶パタン数の上限は「記憶容量」(あるいは単に容量)と呼ば…

『ホップフィールドモデルとその後の展開』という講演動画

YouTubeにあったので、メモ。 www.youtube.com

ホップフィールドネットワークの想起過程のPython実装

はじめに 前回の記事ではC言語でHopfieldモデルの想起過程を実装していた。 tam5917.hatenablog.com 当然、Pythonでも実装可能なので、その実装を紹介するのが本記事の主旨である。 実装 以下に置いた。Enjoy! hopnet_dynamics.py 実装している機能そのもの…

ホップフィールドネットワークの想起過程を再現してみた

はじめに 甘利先生らは、ホップフィールドネットワーク(以降 Hopfieldモデル)について、想起過程のダイナミクスをかつて研究されていた [1]。 甘利先生の著書 [2] にもまた、想起過程の計算機シミュレーションの図が示されている。 先日、Hopfieldモデルを…

はてなブログで数式を書く設定

調べると見つかるのだけど,ここにも書いておく. <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS_CHTML.js"> </script> MathJax公式のconfigはこちら Combined Configurations — MathJax 2.7 documentation はてなブログの設定は 「デザイン→カスタマイズ→ヘッダ→ブログタイトル下」のところに上記のスクリプトを置けばOK.

clangdの設定に書いたもの

設定ファイルは .clangd である。 こんな感じで、-Wallをつけるのがよい。すると、例えば unused variable をコンパイル前に検出してくれたりする。 CompileFlags: Add: [-Wall, -I/opt/homebrew/opt/gsl/include] -I からはじまるものは、他のライブラリ(…

GNU Scientific Library (GSL) を使って擬似逆行列(pseudo-inverse)を計算するサンプルコードを書いた

はじめに 擬似逆行列の計算をC言語で実装する必要に迫られた。手段を探すと、GNU Scientific Library (GSL) が便利に使えそうだった。 そこで、簡単に使えるようにしたサンプルコードを公開するのが本記事の主旨である。 準備:GSLのインストール Ubuntuなら…

ランダムビットパターン系列を連想記憶するホップフィールドネットワークをC言語で書いてみた

はじめに 前回の記事でホップフィールドネットワークのPythonを実装を書いたのだった。 tam5917.hatenablog.com プログラムを高速実行させたく、今回C言語で書き直したということ。 実装 以下に置いた。Enjoy! hopnet_1d.c · GitHub main関数における処理の…

ランダムビットパターン系列を連想記憶するホップフィールドネットワークをPythonで書いてみた

はじめに Pythonでホップフィールドネットワークを書いた記事はいくつか見つかる [1-3]。参考記事 [1] で紹介されている実装では、2次元のビットパターン画像を記憶・想起する仕様になっている。しかし、ホップフィールドネットワークの本質的な動作原理を理…

Psuedo-LikelihoodをRBMの損失関数として使ったら学習はうまくいくのか

はじめに Psuedo-Likelihood (PL) はRBMの学習の進行を測定するための指標として使われている。scikit-learnの BernoulliRBM クラスには PLを計算するための score_samples メソッドが実装されている。 scikit-learn.org さてscikit-learnで計算可能ならば、…

RBMの学習アルゴリズムと損失関数について

はじめに 前回の記事でRBMを実装した。 tam5917.hatenablog.com この実装では、RBMの損失関数は Contrastive Divergence (CD) アルゴリズムを考慮すると,損失関数はvisible層v0から計算される自由エネルギー(F0)と、再構成されたvisible層vkから計算され…

Restricted Boltzmann Machine (RBM) をPyTorchで実装してみた

はじめに 先日、RBMの記事を見かけた。 zenn.dev RBM自体は昔からある有名なモデルであり実装の経験もあったのだが、PyTorchでキレイに書いたことはなかったので、書いてみたということ。 実装 以下に置いた。Enjoy! train_rbm.py · GitHub train_rbm2.py · …