みーのぺーじ

みーが趣味でやっているPCやソフトウェアについて.Python, Javascript, Processing, Unityなど.

2024年現在の TypeScript の設定

ESM な TypeScript を node.js で実行するときの設定を検討します.なお,ESM とは以下のように import を使う方式のことです. import { valueOfPi } from "./constants"; export const twoPi = valueOfPi * 2; https://www.typescriptlang.org/ja/tsconfig…

Pydantic でフィールドの追加を禁止する

Pydantic ConfigDict を使います*1.allow, forbid, ignore から選択します. pydantic.Extra.forbid や Config class を使用する方法もありましたが,Pydantic 2.x では奨励されていません. 動作確認のための unittest は以下の通りです.モデルに text フ…

authorized_keys を追加

scp コマンドでリモートにファイルをコピーするときに,SSHをパスワード認証で使用しているとうまくいかないので,鍵を作成してSSH公開鍵認証を使用します. なお,リモートは user@remote.local と表記しますので,適宜読み替えてください. MacOS, Linux s…

Python で要素の検索速度の比較

Python で複数の要素から特定のものが存在するかを検索する場合の,効率がよい方法を検討します. 課題 10万個の要素から特定の要素が存在するかどうかを返す. set を使用する方法, list を使用する方法をすぐに思いつきます.list を set に変換してから…

Git LFS でバイナリファイルをローカルで管理する

Git

Git でバージョン管理しているプロジェクトにおいて,大きなバイナリファイルを一緒に扱おうとすると,GitHub のファイルサイズの 100 MB 制限でエラーが発生したり*1,バイナリファイルを更新する度にレポジトリが肥大化していって処理に時間がかかるように…

Git が保存する仕組み

Git

Git の内部がどうなっているのか気になったのですが,深く理解しなくても使えるツールなので,ざっくりとまとめます. Git の要点 Git は key-value 型データストアでデータを管理している. Git オブジェクトには,blob, tree, commit, tag の4種類が存在す…

JavaScriptでJSON SchemaとMeta-schemaを使ってみる

JSON Schema を使えば,自分が欲しい構造の JSON データであるかを簡単に判定できるので,とても便利です. まずは JavaScript で JSON Schema を使ってみます. ajv を使う JSON schema バリデータの実装はたくさんありますが,今回は,Ajv JSON schema val…

numpy で指定したデータだけを合計する

sum() 関数の where で指定します. numpy.sum — NumPy v1.26 Manual import numpy as np a = np.array( [ [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], ] ) b = np.array( [ [1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], ] ) v = a.sum(where=b.astype(boo…

PyTorch の学習速度をなるべく速くする

PyTorch の学習に時間がかかるとイライラするので,利用可能な計算資源をなるべく効率的に使用するための工夫をまとめました. 以下は インテル Core i5 12400 と GeForce RTX 4080 を搭載したパソコンに Ubuntu をインストールした環境で検証しています. G…

Pydantic で JSON を読み込む時に型変換される

例えば dict[int, int] を JSON で記述しようとすると,キーは文字列にする必要がありますが,Pydantic がうまく型変換してくれるので気にせず使えて便利です. % python --version Python 3.11.6 % pip freeze pydantic==2.5.2 test_pydantic.py import jso…

GitHub Actions でレポジトリを編集する

Git

.github/workflows/run.yaml on: push permissions: contents: write jobs: main: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: | echo "sample." >> text.txt git config user.name github-actions git config user.email github-act…

ループの速度を Python, Rust, Node.js で比較する

ループ(繰り返し処理)の書き方はプログラミング言語により様々です.使いやすい書き方を選択すればよいとは思いますが,気になったので処理速度を比較してみました. みーがよく使っている,Python, Rust, Node.js について,1千万個の要素を含む配列を用意…

VS Code の Quick Fix で自動インポート

Python のスクリプトを作成している途中で別のモジュールを import したくなった時に,カーソルをファイルの先頭に移動して,import 文を追加して,元のカーソル位置に戻るのが面倒なので,VS Code の Quick Fix を活用しましょう. Refactoring source code…

Docker の /dev/shm の割り当てを調整する

Ray Tune を使用していて,このような警告が表示されました. The object store is using /tmp instead of /dev/shm because /dev/shm has only * bytes available. This will harm performance! You may be able to free up space by deleting files in /de…

Linux でグラフィックボードを節電する

Linux でグラフィックボードを使わない時は電源を切って節電したいと思ったので調べました. 検証方法 Ubuntu 22.04.3 LTS NVIDIA GeForce RTX 4080 NVIDIA Driver 535 マザーボード MSI PRO B660-A DDR4 パソコン全体の消費電力をELPA電力計で測定します. …

「小説家になろう」縦書きPDFをkindle端末で読めるようにする

「小説家になろう」では「縦書きPDF」を提供してくれています.以下の小説の縦書きPDFをダウンロードして Kindle Scribe で読もうとしましたが,文字が表示されませんでした. https://ncode.syosetu.com/n9669bk/ 仕方がないので,MacOS の Preview.app で …

GeForce RTX 4080 を Ubuntu の Docker で使う

環境 接続するディスプレイ端子 nvidia-driver をインストール Secure Boot のための追加の設定 Docker をインストール NVIDIA Container Toolkit をインストール 環境 下記の構成で検証しました. Ubuntu 22.04.3 LTS GG-RTX4080-E16GB/OC/TP (GeForce RTX …

Evernote を退会した

Evernote は,2015年から2023年まで,学習用やメモ用のアプリケーションとしてお世話になりましたが,退会しました.この記事は,みーの人生の一部を8年間にわたり支えてくれた Evernote に感謝をするために書きました. 2015年当時は,ノート機能のアプリケ…

機械学習の用語と英単語

自分用メモです. autoencoding autoregressive batch normalization broadcasting causal computational graph convolution convolutional criterion derivative dropout embedding finetune gradient gradient descent method large language models (LLM)…

Ray Tune でハイパーパラメータを自動調整する

Ray は Apache-2.0 license *1 で公開されている, AI 関連や Python の処理を簡単に並列化して大規模に実行可能にするフレームワークです*2.この中に Ray Tune というライブラリがあります. Ray Tune: Hyperparameter Tuning Ray Tune: Hyperparameter Tu…

Transformer のモデルのまとめ

もともとの論文には,Transformer は encoder と decoder を含む構造として記載されています. *1 もう少しわかりやすい図があったので紹介します. *2 Encoder / Decoder 実際には encoder と decoder はどちらかがあればモデルとして成立するので, encode…

機械学習における訓練・検証・試験データの分割

機械学習では,たくさんのデータを利用してモデルを学習させる手法なので,データを統計学的に適切に扱う必要があります. 機械学習では,モデルの訓練と評価に同じデータセットを使用してはいけないという原則があります.モデルは単純にデータセットを丸暗…

Docker Desktop は必要か

Docker Desktop The #1 containerization software for developers and teams Docker Desktop: The #1 Containerization Tool for Developers | Docker 便利なソフトウェアだと思いますが,必ずしも無料ではありません. Pricing | Docker また,実行速度やC…

PyTorch はミニバッチ学習に自動的に対応する

PyTorch のチュートリアルのソースコードを見ていて,理解できない部分がありました.該当部分を抜粋して引用します. class NeuralNetwork(nn.Module): def __init__(self): super().__init__() self.flatten = nn.Flatten() self.linear_relu_stack = nn.S…

PyTorch の Tensor.to() と nn.Module.to() の違い

RuntimeError: Placeholder storage has not been allocated on MPS device! というエラーを修正するために調べたことをまとめます. torch.Tensor は保存するデバイスを指定でき,Tensor.device プロパティで確認できます. Tensor Attributes — PyTorch 2.…

PyTorch でモデル構築の比較

PyTorch でモデルを構築する方法として, torch.nn.Sequential を使用する torch.nn.Module のサブクラスを作る torch.nn.Module のサブクラスで torch.nn.functional を使用する の3個の方法があります*1. 1.torch.nn.Sequential を使用する nn.Sequential…

PyTorch の自動微分 (torch.autograd)

torch.autograd provides classes and functions implementing automatic differentiation of arbitrary scalar valued functions. *1 PyTorch のドキュメントを読んでもよく分からなかったので,こちらのサンプルを参考にしました. 任意の関数の勾配を自動…

PyTorch で三角関数を学習する

PyTorch で時系列データを学習させてみたかったので,このサンプルを参考に,long short-term memory (LSTM) cell を使った,Recurrent neural network を作成し,ある区間の sin 関数を学習させて,その続きを予測させてみました. sin 関数は,振幅と周波…

VS Code で mypy-type-checker の設定ファイルを指定する

The mypy configuration file - mypy 1.5.1 documentation 上記のドキュメントに従って,mypy の設定ファイルで細かな調整をしようとしても,VS Code の mypy-type-checker にうまく認識されませんでしたが,以下のような設定を追加することで認識されるよう…

LANアダプタが原因で一部のウェブサイトにアクセスできない

MacBook Air (M1, 2020) に USB3.1 Gen1 対応ギガビット LAN アダプタを接続してインターネットを使っていたのですが,時々ウェブサイトにアクセスできない問題が発生していました.ウェブサイトによって症状はまちまちで,例えば以下のようなエラーが出てい…