Li Mu に従って AI コース ノート ch01 を学びましょう
強くお勧めします!!!
Li Mu 氏のコースは基礎がなく、非常に詳細で、以前は AI を体系的に学んだわけではありませんでしたが、今ではただ従うだけです。
コース URL: https://courses.d2l.ai/zh-v2/
クリックしてコースのホームページに入ります。
そこには、コースの紹介、ビデオ、コースウェア、コードが含まれています。
このブログは主に勉強のメモを記録するブログです。
ch_01
N は配列サンプルです
- 0-d (スカラー)[1] カテゴリ
- 1-d (ベクトル) [1.0,2.3,3.4] 固有ベクトル
- 2-d (行列)[[1.0,2.7],[2.3,1.1]]
- 3-d ... RGB 画像の幅 x 高さ x チャンネル
- 4-d ... RGB 画像のバッチ (バッチ サイズ x 幅 x 高さ x チャネル)
- 5-d ... ビデオ バッチ (バッチ サイズ x 時間 x 幅 x 高さ x チャンネル)
アクセス要素
[行、列]
- array[1,2] —— 行 2、列 3 の要素
- array[1,:] - 行のすべての要素
- array[:,1] - すべての要素のリスト
- array[1:3,1:] - 行 1、行 2、列 2 以降のすべての要素
- array[::3,::2] —— 各行に 2 つの要素、どの列にも 1 つの要素
テンソル
テンソルは、複数の次元を持つ値の配列を表します。
# imoprt torch
x = torch.arrange(12)
x
Output: tensor([ 0, 1, 2, 3, 4, 5, 6, 7, 8 , 9, 10、11])
テンソルの基本操作
- テンソルの形状プロパティを通じてテンソルの形状にアクセスします。
- 要素の数と要素の値を変更せずにテンソルの形状を変更するには、 reshape 関数を呼び出すことができます (また、配列が大きい場合は、-1 を追加して形状を自動的に計算することもできます)
- すべて 0、すべて 1、その他の定数、または特定の分布からランダムにサンプリングされた数値 (torch.ones(12)、torch.zeros(12)、torch.randn(12) など) を使用します。
手術
一般的な標準算術演算子 (+、-、、/) も累乗することができますtorch.exp(x)
。
複数のテンソルを連結することができますtorch.cat()
。
テンソル内のすべての要素を合計すると、要素が 1 つだけ含まれるテンソルが生成されますtorch.sum
。
Tensor にはブロードキャスト メカニズムもあります。
インデックス作成とスライス
Tensor インデックスとスライスは Python リスト標準と同じです。
型変換
NumPy テンソルに変換する
A = X.numpy()
B = torch.tensor(A)
type(A),type(B)
出力:
(numpy.ndarray, torch.Tensor)
データの前処理
読み取りデータ
Python で一般的に使用されるデータ分析ツールの中で、pandas パッケージがよく使用されます。
例:
csvファイルを作成する
import os
os.makedirs(os.path.join('..', 'data'), exist_ok=True)
data_file = os.path.join('..', 'data', 'house_tiny.csv')
with open(data_file, 'w') as f:
f.write('NumRooms,Alley,Price\n') # 列名
f.write('NA,Pave,127500\n') # 每行表示一个数据样本
f.write('2,NA,106000\n')
f.write('4,NA,178100\n')
f.write('NA,NA,140000\n')
「NaN」項目は欠損値を表すことに注意してください。
作成した csv ファイルから元のデータセットをロードするには、pandas パッケージをインポートし、read_csv 関数を呼び出します
import pandas as pd
data = pd.read_csv(data_file)
print(data)
印刷結果
NumRooms Alley Price
0 NaN Pave 127500
1 2.0 NaN 106000
2 4.0 NaN 178100
3 NaN NaN 140000
欠損値の処理
データを入力データと出力データに分割する:
inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]
欠損データを処理するための一般的な方法には、補間と削除が含まれます。
たとえば、
inputs.fillna(inputs.mean())
平均値補間は
inputs = pd.get_dummies(inputs, dummy_na=True)
文字列データを 0 または 1 に変換します。
特定のメソッドはデータをクエリできます。
テンソルに変換する
入力と出力のすべてのエントリは数値型であり、将来の計算の便宜のためにテンソル形式に変換する必要があります。
X, y = torch.tensor(inputs.values), torch.tensor(outputs.values)