1. 程式人生 > >torch7學習(一)——Tensor

torch7學習(一)——Tensor

第一篇部落格是從torch7提取出來最常用的知識。
主要講Tensor的用法及其一些函式。
**先說一嘴:**torch中一般有這個東西,就是
y = torch.func(x,…)等價於y = x:func(…),就是說如果用”torch”,那麼“src”是第一個引數。否則就”src:”

初始化

Tensor/rand/zeros/fill

z = torch.Tensor(3,4,2,3,5)  --可以建立多維陣列。裡面是隨機的數。
s = torch.Tensor(2,3):fill(1) --用1填充
t = torch.rand(3,3)
m = torch.zeros(3
,3

其他的初始化方法

t = torch.rand(4,4):mul(3):floor():int()
t = torch.Tensor(3,4):zero()  --注意這裡Tensor的每個元素賦值為0的zero沒有s

Tensor的內容以及資訊

  1. Dimension/size/nElement
z = torch.Tensor(3,4)
x = z:nDimension()  -- 2
y = z:size()  -- y的值為size2的一維陣列。3和4
t = z:nElement() -- 12
  1. 用’[ ]’來取數。而不是像matlab的用’( )’。

Tensor的儲存方式

陣列的第一個數儲存位置為storageOffset(), 從1開始。

x = torch.Tensor(7,7,7)
x[3][4][5]等價於x:storage()[x:storageOffset()+(3-1)*x:stride(1)+(4-1)*x:stride(2)
+(5-1)*x:stride(3)]
-- stride(1),stride(2)和stride(3)分別是49,7,1

Tensor的複製

x = torch.Tensor(4):fill(1)
y = torch.Tensor(2,2):copy(x) --也可以實現不同Tensor的複製。

Tensor的提取

select/narrow/sub

總說:select是直接提取某一維;narrow是取出某一維並進行裁剪; sub就是取出一塊,是對取出的所有維進行裁剪。
語法: select(dim, index); narrow(dim, index, num); sub(dim1s, dim1e, dim2s, dim2e,…)

x = torch.Tensor(3,4)
i = 0 
x:apply(function()i = i+1 return i end)
--[[
x 為
  1   2   3   4
  5   6   7   8
  9  10  11  12
]]
selected = x:select(1,2)  --第一維的第二個。就是第二行。相當於x[2]
narrowed = x:narrow(2,1,2)
--[[
th> narrowed
  1   2
  5   6
  9  10
]]
subbed = x:sub(1,3,2,3)
--[[ 一維到3為止,二維也到3為止。
th> subbed
  2   3
  6   7
 10  11
]]

用”{ }”來提取

上面的用函式的方式可能還是有點兒麻煩。matlab有類似(:, : ,1:2)的寫法。那麼lua呢?
語法:
1. [ {dim1 , dim2, …} ]來獲取某些維度。類似select
2. [ { {dim1s, dim1e}, {dim2s, dim2e},… } ] 來進行類似narrow或是sub的裁剪。

x = torch.Tensor(5,6):zero()
x[{1,3}] = 1 --等價於matlab的 x(1,3) = 1
x[ {2, {2,4}} ] = 2 --等價於matlab的 x(2,2:4) = 2
x[ { {}, 4}] = -1 --等價於matlab的 x(:,4) = -1

Expand/RepeatTensor/Squeeze

  1. expand
x = torch.rand(10,2,1)
y = x:expand(10,2,3) --將三維的size變成了3
-- expand即為“擴充套件”,擴充套件某個size為1的那一維度
  1. repeatTensor:將Tensor看成一個元素,按照特定方式進行排列。
x = torch.rand(5)
y = x:repeatTensor(3,2) --size變成了3x10
  1. squeeze :將size為1的維度壓縮掉。

View/transpose/permute

  1. view:將Tensor看成特定空間維數.

    x = torch.zeros(2,2,3)
    x:view(3,4) --等價於x:view(3, -1)
    --  -1 表示將剩餘元素全部看成這一維度
  2. transpose:是permute的精簡版本。transpose(dim1, dim2)只能將兩個維度進行互換
x = torch.Tensor(3,4):zero()
y1 = x:t() --如果是2D資料等價於transpose(1,2)
y2 = x:transpose(1,2)

3.permute

x = torch.Tensor(3,4,2,5)
y = x:permute(2,3,1,4) -- 按照2,3,1,4維進行重排列。

相關推薦

torch7學習——Tensor

第一篇部落格是從torch7提取出來最常用的知識。 主要講Tensor的用法及其一些函式。 **先說一嘴:**torch中一般有這個東西,就是 y = torch.func(x,…)等價於y = x:func(…),就是說如果用”torch”,那麼“s

Tensorflow學習認識Tensor張量

在自己學習Tensorflow的過程充滿了艱辛,因為沒有明確的路去學習,只能通過查閱大量的文章和部落格去不斷的豐富自己的知識,接下來是我總結的認知。僅此以記錄。 什麼是Tensor 學習Tensorflow,首先要知道什麼是Tensorflow 從英文

Node個人學習----模塊

需要 區別 class 當前 個人 一個 min export ava 1、自定義模塊與系統模塊的引入方式區別:----自定義模塊需要加“./”來聲明它不是一個系統模塊 const mod1=require("系統模塊.js"); const mod1=require(

MySQL學習ODBC 安裝

oca local new cmd 密碼 服務 關閉 mysql 系統 寫前說明 初次接觸MySQL,都說MySQL各種好。我也來學習學習。之前只有SQLServer2008的經驗,其實也只是皮毛。因為SQLServer還是比較容易上手的。也不麻煩。但是自己

vue基礎學習

time tle eight pla use logs new dial for 01-01 vue使用雛形      <div id="box"> {{msg}} </div> <sc

java學習 環境搭建、hello world的demo

環境變量 網上 類庫 .com java開發 www cnblogs rgs .class   本程序媛搞前端的,上班偶有空閑,不妨來學習學習,不然怎麽包養小白臉,走上人生巔峰?   說實話,每個語言都相通,有了javascript的基礎,並且有了兩三年跟java打交道的經

【Cloud Foundry】Could Foundry學習——Could Foundry淺談

art lock mod out isp ted 組成 .com pop 在閱讀的過程中有不論什麽問題。歡迎一起交流 郵箱:[email protected]/* */ QQ:1494713801 Cloud Foundry是VMware

Android中關於JNI 的學習對於JNIEnv的一些認識

else size 初步 jint 使用 包括 pri jnienv 就會 一個簡單的樣例讓我們初步地了解JNI的作用,可是關於JNI中的一些概念還是須要了解清楚,才可以更好的去利用它來實現我們想要做的事情。 那麽C++和Java之間的是怎樣通過JNI來進行互相調用的呢

.Net MVC的學習

後綴 fonts mvc 存在 eth 大致 例如 pre gb2   套種間作,也挺有意思的——近來學習感悟。DRP學習的同一時候,折騰了點曾經不曾學習可是卻非常多次耳聞過的東西——Asp.Net中的MVC架構模式。 一、是什麽?      MVC,即(Model-

Python學習

ubun 安裝目錄 tle setup extract reat 常用插件 增加 網址 Python學習(一) 一:開發工具安裝   1,pycharm下載:Linux版本   2,破解:在help-register下-service輸入:      http://elpo

Web Service學習

內存 res 特性 response 屬性表 高性能 fas str ima 1、WebMethod特性包含哪些屬性,都有什麽用? 1、BufferResponse屬性 該屬性表明是否啟用對Web Service方法響應的緩沖。當設置為true時,Web Service

Python基礎學習

func exe function 學習 typeerror exit invalid min eas #Default Argument Values & in keyworddef ask_ok(prompt, retres=4, reminder=‘pleas

Django學習---基本配置及創建項目、應用

cut 維護 onf response settings 通過 學習 clu render 安裝:在Django官網下載最新版Django然後通過pip安裝即可 一、創建項目 進入文件夾,打開cmd窗口,輸入django-admin startproject myblog(

機器學習

無限 size mage 計算機 博客 對數 png 表示 獲得 對學習的定義 學習經驗E 完成任務T 績效指標P 對於某類任務T和性能度量P,如果一個計算機程序在完成T上以P來衡量完成的好壞,並隨著經驗E而自我完善,那麽我們稱這個計算機程序在從經驗E中學習

Linux服務器學習

-1 修改 感覺 img size 地址 mage 第一次 spa 一、首先連接服務器   下載一個windows下連接linux的ssh工具,我這裏用的putty。一次填入HostName(主機名,可以是服務器域名也可以是對應的ip)、Port(端口號默認為22)、Co

CSS3總結學習:CSS3用戶界面

interface 繪制 如果 位置 nbsp 瀏覽器 none ble adding 在CSS3中,新的用戶界面屬性有很多,本文重點介紹resize,box-sizing,offset。 瀏覽器支持,如下圖,圖片源於W3school 1.CSS Resizing 在cs

Spring 源碼學習

pla 註入 websocket web前端 tex 異常 messaging ping 完整 設計伊始 Spring 是為解決企業級應用開發的復雜性而設計,她可以做很多事。但歸根到底支撐Spring的僅僅是少許的基本理念,而所有地這些的基本理念都能可以追溯到一個

[linux][MongoDB] mongodb學習:MongoDB安裝、管理工具、

ole ont mon mkdir man 管理工具 tar end 認證 參考原文:http://www.cnblogs.com/kaituorensheng/p/5118226.html linux安裝完美實現! 1. mongoDB安裝、啟動、關閉   1.1

算法學習插入排序算法

-1 color pri 最小 inpu range col pre arr 1.Maximum of array 說明:給定一組數組,進行排序,得到最大值和最小值。 1 input data: 2 1 3 5 7 9 11 ... 295 297 299 300 298

[轉]JMeter學習工具簡單介紹

正在 包含 定義 寫入文件 線程組 element 層級 工作臺 roc 一、JMeter 介紹 Apache JMeter是100%純JAVA桌面應用程序,被設計為用於測試客戶端/服務端結構的軟件(例如web應用程序)。它可以用來測試靜態和動態資源的性能,例如: