1. 程式人生 > 其它 >第一次深度學習

第一次深度學習

第一次深度學習

1.PyTorch基本操作練習

1.定義資料

建立一些張量

2.定義操作

凡是用Tensor進行各種運算的,都是Function

最終,還是需要用Tensor來進行計算的,計算無非是

  • 基本運算,加減乘除,求冪求餘

  • 布林運算,大於小於,最大最小

  • 線性運算,矩陣乘法,求模,求行列式

基本運算包括: abs/sqrt/div/exp/fmod/pow ,及一些三角函式 cos/ sin/ asin/ atan2/ cosh,及 ceil/round/floor/trunc 等具體在使用的時候可以百度一下

布林運算包括: gt/lt/ge/le/eq/ne,topk, sort, max/min

線性計算包括:

trace, diag, mm/bmm,t,dot/cross,inverse,svd 等

以下為資料的分佈直方圖。可見當資料足夠多時,正態分佈會體現的非常明顯。

矩陣在兩個維度上的拼接

2.螺紋旋轉案例

本例中的螺旋資料不是線性可分的,所以需要轉換輸入資料的空間使得資料可以線性可分。

首先引入基本的庫,初始化重要引數

初始化 X 和 Y。 X 可以理解為特徵矩陣,Y可以理解為樣本標籤。 結合程式碼可以看到,X的為一個 NxC 行, D 列的矩陣。C 類樣本,每類樣本是 N個,所以是 N*C 行。每個樣本的特徵維度是2,所以是 2列。

在 python 中,呼叫 zeros 類似的函式,第一個引數是 y方向的,即矩陣的行;第二個引數是 x方向的,即矩陣的列。下面結合程式碼看看 3000個樣本的特徵是如何初始化的。

1.構建線性模型分類

使用 print(y_pred.shape) 可以看到模型的預測結果,為[3000, 3]的矩陣。每個樣本的預測結果為3個,儲存在 y_pred 的一行裡。值最大的一個,即為預測該樣本屬於的類別

score, predicted = torch.max(y_pred, 1) 是沿著第二個方向(即X方向)提取最大值。最大的那個值存在 score 中,所在的位置(即第幾列的最大)儲存在 predicted 中。下面程式碼把第10行的情況輸出,供解釋說明

此外,每一次反向傳播前,都要把梯度清零,

2.構建兩層神經網路