今回は、以下の記事の続きとして PyTorch で RMSProp のオプティマイザを実装してみる。 blog.amedama.jp 上記では PyTorch で Adagrad のオプティマイザを実装した。 Adagrad は学習率の調整に過去の勾配の平方和の累積を使っている。 このやり方には、イテ…
住んでいる地域によっては車を持たなくても不便なく生活できる。 それでも、子どもが生まれるといったライフイベントを経て、車の購入を検討する場面が訪れることはある。 そんなとき、これまで車に興味が無かった場合は、ほとんど知識がゼロの状態から調べ…
今回は、以下の記事の続きとして PyTorch で Adagrad を実装したオプティマイザを自作してみる。 以下の記事では単純な SGD と Momentum を導入した SGD を実装した。 blog.amedama.jp 今回扱う Adagrad のアルゴリズムではパラメータごとに学習率を自動で調…
今回は、PyTorch でオプティマイザを自作する方法について紹介してみる。 きっかけは、勉強がてら主要なオプティマイザを自作してみようと思い至ったことだった。 その過程で、PyTorch でオプティマイザを自作する場合の流儀が把握できた。 そこで、この記事…
isort は、Python のコードフォーマッタのひとつ。 使うことで、インポート文を Python の標準的なコーディング規約である PEP8 に沿った形で整形できる。 pycqa.github.io ところで、PEP8 では同じパッケージのオブジェクトをインポートする際には 1 行にま…
Kaggle などのデータ分析コンペで使われるテクニックのひとつに reduce_mem_usage() 関数がある。 これは、一般に pandas の DataFrame のメモリ使用量を削減するために用いられる。 具体的には、カラムに出現する値を調べて、それを表現する上で必要最低限…
PyTorch に慣れるためにコードをたくさん読み書きしていきたい。 今回は MNIST データセットを使ってシンプルな AutoEncoder を書いてみる。 使った環境は次のとおり。 $ sw_vers ProductName: macOS ProductVersion: 14.5 BuildVersion: 23F79 $ python -V …
ニューラルネットワークのことが何も分からないので少しずつでも慣れていきたい。 そのためには、とにかくたくさんのコードを読んで書くしかないと思う。 一環として、今回はこれ以上ないほど簡単なタスクを解くコードを書いてみる。 具体的には、シンプルな…
scikit-learn に組み込みで用意されている Transformer は、長らく入出力として NumPy 配列にしか対応していなかった。 その状況が変わったのは v1.2 以降で、Pandas の DataFrame を扱えるようになった。 blog.amedama.jp そして v1.4 からは、ついに Polar…
Ubuntu をサーバ版でインストールした場合、デスクトップ環境などはデフォルトで入らない。 しかし、後から必要になる場合もある。 そこで、今回は Ubuntu 24.04 LTS に、後から GUI を追加する方法を書く。 なお、この確認は LTS 版のリリースが出る度に実…
PyTorch v1.12 以降では、macOS において Apple Silicon あるいは AMD の GPU を使ったアクセラレーションが可能になっているらしい。 バックエンドの名称は Metal Performance Shaders (MPS) という。 意外と簡単に使えるようなので、今回は手元の Mac で試…
Windows の CLI で扱えるパッケージマネージャのひとつに Chocolatey がある。 今回は、そのインストール方法を確認したのでメモ的にまとめておく。 なお、インストール方法に関する公式のドキュメントは以下にある。 インストールに使う手順やコマンドがい…
OLAP (OnLine Analytical Processing) の用途に特化した組み込みの RDBMS に DuckDB がある。 そして、dbt には DuckDB 向けのアダプタがあるので、バックエンドのデータベースとして利用できる。 これは、ローカルのマシンでデータ分析をしたり、dbt の機能…
以前、システムが所属している以外の (= 非ルートな) Network Namespace 上では Linux Bridge の STP が動作しない件について書いた。 blog.amedama.jp 月日は流れて、去年の話ではあるけど Linux カーネルに以下のパッチが投稿されて取り込まれたようだ。 l…
Lima 1 の仮想マシンは、デフォルトではディスプレイのない Headless モードで動作する。 とはいえ、作業の都合からディスプレイが欲しくなる場面もある。 そこで、今回は Lima の仮想マシンでディスプレイを表示する方法について書く。 使った環境は次のと…
今回は YAMAHA RTX830 で DS-Lite と PPPoE を併用しながら IKEv2 のリモートアクセス VPN を使えるようにする設定を紹介する。 リモートアクセス VPN を利用するためにはインターネット側を起点にした通信が必要になる。 しかし、DS-Lite の IPv4 通信は CG…
AdGuard Home は、インターネット広告や端末のトラッキングなど 1 をブロックすることを目的とした OSS の DNS サーバ (プロキシ) のひとつ。 フィルタリングルールを入れた状態で DNS サーバとして利用することで、端末に依存しないフィルタリング 2 が可能…
タイトルの通り、自宅のルータに YAMAHA RTX830 を、無線 LAN アクセスポイントに YAMAHA WLX212 を導入してみた。 今回は、それに至る背景や使ってみての所感を述べる。 なお、YAMAHA 製のネットワーク機器を扱うのは、これが初めての経験だった。 YAMAHA R…
今回 2023 年秋期のデータベーススペシャリスト試験を受験して合格できた。 後から振り返ることができるように、受験に関する諸々について書き留めておく。 www.ipa.go.jp 受験のモチベーションとしては、データベースについて漠然とした知識の不足を感じて…
これは Polars Advent Calendar 2023 の 4 日目に対応したエントリです。 qiita.com Polars と PySpark は操作方法が似ていると言われることがある。 そこで、今回はいくつかの基本的な操作について、実際に両者でコードを比較してみた。 また、それぞれの思…
これまで scikit-learn が提供する TransformerMixin の実装 1 は、出力に NumPy 配列を仮定していた。 そのため、pandas の DataFrame を入力しても出力は NumPy 配列になってしまい、使い勝手が良くないという問題があった。 この問題は、特に Pipeline や…
今回は OSS のリバースプロキシである HAProxy 1 を使って HTTP/2 を試してみる。 HTTP/2 は HTTP/1.1 に存在するパフォーマンス面の課題を解決することを目的に生み出された。 Google が開発していた SPDY というプロトコルがベースになっている。 HTTP/1.1…
今回は Linux の Network Namespace で作ったネットワーク上で Libreswan を動かして IPsec VPN を試してみる。 なお、Libreswan には、いくつかの動作モードがある。 今回は、その中でも Route-based VPN using VTI と呼ばれる動作モードを利用する。 これ…
今回は Network Namespace で作ったネットワーク上で nftables 1 を使った Destination NAT を試してみる。 このエントリは、以下のエントリの続きとなっている。 blog.amedama.jp 上記は Source NAT だったのが、今回は Destination NAT になっている。 使…
今回は Network Namespace で作ったネットワーク上で nftables 1 を使った Source NAT (Network Address Translation) を試してみる。 nftables は、Linux で長らく使われてきた iptables 2 などのプログラムを置き換えることを志向したフレームワーク。 nft…
リチウムイオン電池を使ったバッテリーは、一般的に残量が 0% や 100% の付近にあると劣化が進みやすい。 また、充電サイクルの回数が増える毎に、少しずつではあるが着実に劣化していく。 バッテリーが劣化すると、設計上の容量よりも電気を蓄える力が落ち…
Python の標準ライブラリには tarfile というモジュールがある。 このモジュールを使うと tar 形式で複数のファイルをまとめることができる。 また tarfile モジュールは gzip や bzip2 といった形式の圧縮・展開もサポートしている。 今回は、そんな tarfil…
今回は Google Cloud の Cloud Functions で実行した処理の中で Cloud Storage にオブジェクトを保存する方法について。 Cloud Functions で実行した何らかの処理の成果物を保存する先として Cloud Storage を使うイメージになる。 操作は、基本的に Google …
一昔前の日本では、ファイルの圧縮に LZH フォーマットがよく使われていた。 今ではほとんど使われることが無くなったとはいえ、しぶとく生き残っているシステムもある。 今回は、そうしたシステムからダウンロードしたファイルを Python の lhafile で展開…
何らかの処理を定期的に実行したくなる場面は多い。 トラディショナルなやり方であれば、仮想マシンを用意して cron などで処理を呼び出すと思う。 もちろん、それでも良いんだけど、よりシンプルに実装したい気持ちが出てくる。 具体的にはマシンの管理をな…