Mojoでテンソルをモデル化する
形状、ストライド、要素のレイアウトを学びます
「Mojoでテンソルをモデル化する」はCoddyKit上の無料Mojo Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはMojo Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Mojo Academyコースには全4レッスンが含まれています。
テンソルとは
テンソルとは、数値が並んだn次元の格子です。ベクトルは1次元、行列は2次元で、画像のバッチは多くの場合4次元です。
内部ではフラットなメモリ
何次元に見えても、テンソルは実際にはメモリ上で値を端から端まで並べた1つのフラットなバッファーとして存在します。
var data = List[Float32](0, 1, 2, 3, 4, 5)形状が格子を表す
形状は、各次元のサイズを1つずつ並べたタプルです。形状が(2, 3)なら、3列の行が2つあることを意味します。
var shape = (2, 3) # 2 rows, 3 colsインデックスで要素を選ぶ
各次元につき1つのインデックスを指定して要素を表します。(2, 3)のテンソルでは、(1, 2)は2行目の最後の列です。
ストライドでメモリに対応付ける
ストライドは、ある次元に沿って1つ進むために、フラットな領域を何個分移動するかを示します。ストライドによって、インデックスを単一のオフセットに変換できます。
var strides = (3, 1) # row jump 3, col jump 1オフセットの計算式
インデックスは内積によって平坦化できます。オフセットは、各インデックスに対応するストライドを掛けた値の合計です。そのオフセットで正しい位置に到達できます。
offset = i * strides[0] + j * strides[1]行優先レイアウト
Mojoの数値コードでは通常、行を連続して格納します。これを行優先と呼びます。最後の次元のストライドは1なので、列は隣り合って配置されます。
ストライドが強力な理由
ストライドを工夫すれば、データをコピーせずにテンソルを表示、スライス、転置できます。変わるのはストライドだけで、バッファーは変わりません。
要素型が重要
すべてのテンソルには、Float32やInt64のような固定のdtypeがあります。型を統一することで、Mojoは値を密に格納し、高速に計算できます。
alias dtype = DType.float32最小限のTensor構造体
テンソルは、データポインターと形状、ストライドをまとめた構造体としてモデル化できます。これにより、レイアウト情報を1か所で管理できます。
struct Tensor:
var data: UnsafePointer[Float32]
var shape: (Int, Int)
var strides: (Int, Int)連続配置とストライド配置
連続したテンソルには隙間がないため、線形スキャンは低コストです。ストライド付きビューではメモリ上を飛び飛びにアクセスすることがあり、メモリアクセスが遅くなる場合があります。
クイックチェック
(2, 3) の行優先テンソルがあります。要素 (1, 2) にはどのようにアクセスしますか?
まとめ
テンソルは、フラットなバッファーに形状とストライドを加えたものです。オフセットの計算式でインデックスをメモリ位置に対応付け、行優先では列が連続して配置されます。🧮
AI チューターと学ぶ Mojo — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 30
- レッスン
- 120
よくある質問
「Mojoでテンソルをモデル化する」レッスンは無料ですか?
はい。「Mojoでテンソルをモデル化する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Mojo Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Mojo Academyコースには全4レッスンが含まれています。
「Mojoでテンソルをモデル化する」で何を学びますか?
形状、ストライド、要素のレイアウトを学びます ブラウザで直接実行するハンズオンコードでMojo Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Mojo Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのMojo Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「Mojoでテンソルをモデル化する」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このMojo Academyレッスンでコードを書いて実行できますか?
はい。すべてのMojo Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Mojoでテンソルをモデル化する
- Matmulを段階的に構築する
- 内積の最適化
- 数値的な正しさの検証