Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
実践で使えるtorchのテンソル演算
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
NearMeの技術発表資料です
PRO
December 26, 2025
51
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
実践で使えるtorchのテンソル演算
NearMeの技術発表資料です
PRO
December 26, 2025
More Decks by NearMeの技術発表資料です
See All by NearMeの技術発表資料です
初めてのLean言語
nearme_tech
PRO
0
10
Apache Airflow Workflow orchestration without turning cron into spaghetti
nearme_tech
PRO
1
16
実務で役立つ幾何学 ボロノイ図の基礎から グラフ・ネットワーク応用まで
nearme_tech
PRO
1
48
SQL/ID抽出タスクから考える 実践的なハルシネーション対策
nearme_tech
PRO
1
58
OpenCode & Local LLM
nearme_tech
PRO
0
110
OpenCode Introduction
nearme_tech
PRO
0
52
【Browser Automation × AI】 Stagehandを試してみよう
nearme_tech
PRO
0
140
AIを用いた PID制御で部屋 の温度制御をしてみた
nearme_tech
PRO
0
140
CopilotKit + AG-UIを学ぶ
nearme_tech
PRO
3
560
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
From π to Pie charts
rasagy
0
200
30 Presentation Tips
portentint
PRO
1
320
How to Talk to Developers About Accessibility
jct
2
230
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Crafting Experiences
bethany
1
170
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
340
Large-scale JavaScript Application Architecture
addyosmani
515
110k
エンジニアに許された特別な時間の終わり
watany
107
250k
Claude Code のすすめ
schroneko
67
230k
How to train your dragon (web standard)
notwaldorf
97
6.7k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
Transcript
0 実践で使えるtorchのテンソル演算 2025-12-26 第137回NearMe技術勉強会 Takuma Kakinoue
1 テンソル演算を習得するメリット • 機械学習関連では必須スキル • 業務アプリ開発においても,特定のシーンにおいて有効活⽤できるかも
2 テンソル演算を習得するときのポイント • ⼊⼒のshapeと出⼒のshapeを把握する ◦ mvであれば,[n, m] x [m] →
[n]など • Notebookなどで適当に遊んでみると感覚的に理解できる ◦ 感覚的に理解すると,数値計算以外の開発においても, 「ここテンソルにしたら効率良くね?」って気づけるようになる • 今回はPyTorchを使うが,Numpyなども8割⽅同じ考えで習得できる
3 ⽬次 • 積 ◦ dot, mv, mm, bmm, matmul
• ⽣成 ◦ zeros, ones, randn, arange • 次元操作および形状変更 ◦ t, transpose, reshape, squeeze, unsqueeze, cat, stack, split • index操作 ◦ gather, masked_select • 集約関数 ◦ sum, mean, max, min, std ※ 他にも色々な関数があるので, Pytorchのdocを是非ご覧ください https://docs.pytorch.org/docs/stable/t orch.html
4 ⽤語の定義 • スカラー ◦ 0次元(単⼀)の値 ex. 1.0 • ベクトル
◦ 1次元のテンソル ex. [1.0, 2.0, 3.0] • ⾏列 ◦ 2次元のテンソル ex. [[1.0, 2.0], [3.0, 4.0]]
5 dot • ベクトルとベクトルの積 ◦ [n] x [n] → []
(スカラー) • 2次元([1, n] x [1, n])にするとエラー
6 mv • ⾏列(matrix)とベクトル(vector)の積 ◦ [n, m] x [m] →
[n]
7 mm • ⾏列(matrix)と⾏列(matrix)の積 ◦ [n, m] x [m, k]
→ [n, k]
8 bmm • テンソルとテンソルの積(mmにバッチの次元が⾜された) ◦ [batch, n, m] x [batch,
m, k] → [batch, n, k]
9 matmul • dot, mv, mm, bmmを⼀般化したAPI ◦ つまり⼊⼒テンソルの次元数によって操作の意味が異なる •
以下の例では,10x10がバッチ次元として解釈され, 各バッチに対する[3, 5] x [5, 2]のmmが計算されている
10 zeros • 要素が全て0のテンソルを⽣成する • zeros_like
11 ones • 要素が全て1のテンソルを⽣成する
12 randn • 標準正規分布に従う乱数を値に持つテンソルを⽣成する
13 arange • ⼊⼒された範囲を値に持つベクトルを⽣成する
14 t • ⾏列の転置 • 3次元以上の テンソルだとエラー 転置してもstride(indexの進み⽅)が変わるだけ。 コピーしたい場合は,contiguousやcloneを⾏う。 ※
torchの転置の具体的な挙動に関して解説してくれているサイトです https://aisinkakura-datascientist.hatenablog.com/entry/2024/06/19/113008
15 transpose • 指定した2つの次元を ⼊れ替える • xが⾏列の場合, transpose(x, 0, 1)は
t(転置)と同じ挙動
16 reshape • 要素数は変えずに, 指定した形状に変形 • -1と指定すると, ⾃動でサイズ数を調整
17 squeeze • サイズが1の次元を削除する • 指定したindexの次元のみ削除することも可能
18 unsqueeze • サイズが1の次元を指定した次元indexに差し込む
19 [実践例] squeeze/unsqueezeの使い所 • batch次元の追加/削除 ◦ 単発データに対する推論を深層学習モデルで⾏うとき, ⼊⼒はsqueezeでバッチ次元を⾜し, 出⼒はunsqueezeでバッチ次元を削除するなど ◦
loss計算時に,バッチ次元をsqueezeで削除 • 集約後の次元削除 ◦ sumやmeanなどをした後に,不要な次元をsqueezeで削除
20 cat • n個のテンソルを指定した次元で結合する ◦ 既存の次元に沿って結合するので次元数は増えない
21 stack • n個のテンソルを指定した次元で結合する ◦ 新しい次元を作って積む ※ catとstackの違いに関して解説してくれているサイトです https://aisinkakura-datascientist.hatenablog.com/entry/2024/05/28/204548
22 split • テンソルを指定した個数に分割する • テストデータを作る際などに使う
23 gather • 指定したindexの要素のみを取り出す • argmaxと組み合わせることで最⼤値を抽出可能 例えば,強化学習の DeepQNetworkにおいて, 最大のQ値を求める箇所で使 いました
24 masked_select • maskテンソルで指定した要素を抽出する 入力テンソルの次元に 依らず, ベクトルで返ってきます
25 集約関数 - sum, mean, max, min, std • 指定した次元で集約する
◦ keepdim=True/Falseで出⼒の形状が変化 x: n次元, dim: [k]の場合, keepdim=Falseなら出力はn-k次元, keepdim=Trueなら出力はn次元
26 [実践例] Multi-Head Attentionの実装解説
27 [実践例] マスク付き集約 • 30以上の要素の平均値を求めるコード
28 [実践例] Softmax分類器 loss=2.5506 重みを更新したら loss=1.6442まで減少!
29 Thank you