1. 程式人生 > >Torch7深度學習教程(二)

Torch7深度學習教程(二)

  • Torch裡非常重要的結構Tensor(張量),類似於Python用的Numpy
    這裡寫圖片描述
    宣告Tensor的格式如12行,列印a可以得到一個5x3的矩陣,這裡的沒有賦初值,但是Torch也會隨即賦值的,具體的就跟c++裡面的生命了變數雖沒有初始化,但是還是會有值一樣。
    這裡寫圖片描述
    接著我們呼叫rand隨即初始化矩陣的值(注意這裡跟我上面說的隨即初始化的區別)。
    這裡寫圖片描述
    也可以直接呼叫隨即初始化Tensor的值,如16行的程式碼,與a的隨即初始化5x3矩陣是一樣的,這裡b是3x4矩陣。
    這裡寫圖片描述
    矩陣的乘實現的第一種方法
    這裡寫圖片描述
    矩陣的乘實現的第二種方法
    這裡寫圖片描述
    矩陣的乘實現的第三種方法,這種方法是先宣告一個5x3乘以3x4矩陣生的5x4舉證的Tensor變數c後,用變數c呼叫mm()方法進行乘運算,最後將結果儲存到了c中,當然也可以用如下方式儲存這裡寫圖片描述

    這種方式儲存的不需要宣告d為5x4的矩陣,直接使用即可,跟matlab特別像。
    這裡寫圖片描述

price = torch.Tensor{28993, 29110, 29436, 30791, 33384, 36762, 39900, 39972, 40230, 40146}

這裡寫圖片描述
這是自己定義Tensor的值輸入10個整型值,列印price,注意這時它只是一個有10資料的Tensor。
這裡寫圖片描述
對比這兩張圖片,第一張是有10個數據的Tensor,第二張是10x1的矩陣,也可以成為列向量(神經網路經常用到),是呼叫了reshape()方法轉換的,它們看著一樣本質上是不一樣的!
這裡寫圖片描述
這時再次呼叫reshape()方法生產的2x5矩陣,值得注意的是,現在雖然呼叫了兩次reshape(),但是原來的price還是10個數據的Tensor,如下圖22行,在經過2次reshape()運算後price沒有變化。
這裡寫圖片描述

這裡寫圖片描述
可以使用賦值語句將10x1的向量儲存到price_vec中,當然也可以一直用price:reshape(10,1)來表示10x1向量,就是程式碼長一些。

這裡寫圖片描述
如果想輸出1到10這樣的類似於列舉型資料時,可以呼叫range()方法,再次提醒這樣初始化的還是一個Tensor,而非運算時候的矩陣或者向量,要用reshape轉換。