技術ブログだがね

名古屋出身ソフトウェアエンジニアのブログ

Grad-CAM を画像分類二項ロジスティック回帰に適用する変形

Grad-CAM を画像分類二項ロジスティック回帰に適用する変形
仕事上必要になり、OpenAI CLIP によるエンコーディングを使って画像分類をするロジスティック回帰モデルを作成していました。 反応位置を見るために、Grad-CAM を適用できそうだなと考えていたのですが、Grad-CAM は One-Hot エンコーディングによる出力を想定しているように見えるので、スカラー値で出力をする二項のロジスティック回帰だと、どう計算すれば良いか自明ではありませんでした(少なくとも私には)。 …

.NET (C#) で複数オブジェクトをストリームに JSON シリアライズ

.NET (C#) で複数オブジェクトをストリームに JSON シリアライズ
BinaryFormatter が将来的に .NET から削除されるようです(つい最近まで知らなかった勢)。 Python の pickle 同様、低レイヤ API としてあくまでリスクがあっても使えるようにしてあるし、これからもそうであろうと思っていたので驚きました。 …

Python でジェネリック型の型パラメータを実行時に取れるようにする Mixin 作った

Python でジェネリック型の型パラメータをランタイム時に取得できる抽象を提供するライブラリ Reification を作りました。前回記事「Python のジェネリック型から実行時に型パラメータを取得する方法」の内容を綺麗に実装した感じです。 このライブラリを使用すると、ジェネリックなクラスにランタイムでその型パラメータを認識させ、それに基づいた動作をさせることができます。具体的なユースケースとしては、コードの動的型検査の強化や、型パラメータを動作上の意味付けとして利用することなどが考えられます。 …

ELYZA Japanese LLaMA 2 13B を WEB デプロイ

ELYZA Japanese LLaMA 2 13B を WEB デプロイ
ELYZA Japanese LLaMA 2 の 13B モデルがリリースされたのでお試しです。量子化済みモデルの中から fast-instruct-q5_K_M を選びました。 7B を扱った先回記事とだいたい同じ内容を Ubuntu で行っています。 Llama.cpp の Python バインディング (CPU) である llama-cpp-python は OpenAI 互換の API サーバーを内蔵しているので、ここに Chatbot UI (WEB フロントエンド) を接続することで、ChatGPT サービスのように WEB から ELYZA Japanese LLaMa 2 を使うことができます1。 …

Python のジェネリック型から実行時に型パラメータを取得する方法

Python の型ヒントには、ジェネリック型も存在します。しかし、現在の Python の実装では、ジェネリック型のインスタンスやクラスには、実行時に型パラメータの情報は一切残っていない(型消去的動作)です。 本記事では、Python のジェネリック型の型注釈で実行時に型パラメータを取れるようにする方法を紹介します。 …