Mojo Academy · レッスン

Mojoでテンソルをモデル化する

形状、ストライド、要素のレイアウトを学びます

レッスン 1/413 ステップ

「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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Mojoでテンソルをモデル化する
  2. Matmulを段階的に構築する
  3. 内積の最適化
  4. 数値的な正しさの検証
← Mojo Academyに戻る