pyTorch基础入门练习

import导入

import torch#基本的torch函数
import torch.autograd as autograd#自动求导
import torch.nn as nn#神经网络类都在这个里面
import torch.nn.functional as F#几乎所有的激励函数
import torch.optim as optim#优化

创建Tensors

#create 1D vector
V_data = [1., 2., 3.]
V = torch.Tensor(V_data)#我用的是pyCharm编辑器,输入torch给的提示没有Tensor函数,其实是有的
print(V)
 1
 2
 3
[torch.FloatTensor of size 3]
#create 2D vector
M_data = [[1., 2., 3.], [4., 5., 6.]]
M = torch.Tensor(M_data)
print(M)
 1  2  3
 4  5  6
[torch.FloatTensor of size 2x3]
#create 3D vector
T_data = [[[1.,2.], [3.,4.]],
          [[5.,6.], [7.,8.]]]
T = torch.Tensor(T_data)
print(T)
(0 ,.,.) = 
  1  2
  3  4

(1 ,.,.) = 
  5  6
  7  8
[torch.FloatTensor of size 2x2x2]

获取Tensor部分值

#我就觉得这里比TensorFlow好用多了QAQ 
print(V[0])
print(M[0])
print(T[0])
1.0

 1
 2
 3
[torch.FloatTensor of size 3]


 1  2
 3  4
[torch.FloatTensor of size 2x2]

产生随机数据

x = torch.randn((3,4,5))
print(x)
(0 ,.,.) = 
  1.4533  0.0593  0.2027 -1.0107 -0.3175
 -0.1847  0.3021  0.0848 -1.2445 -0.5568
 -0.2796 -0.5961 -0.3000 -0.2782  1.4920
  1.4030  1.0875 -0.5814 -1.2006  0.2690

(1 ,.,.) = 
 -0.7093 -0.4939  0.7491  0.9133  0.4221
  1.3949  2.5685 -0.4359 -0.7788  1.0251
  1.6232 -1.2432  0.3403 -1.0551  1.3790
 -1.5632 -0.9772  0.3963 -0.1890  0.0032

(2 ,.,.) = 
 -0.3360 -0.5571 -0.6641 -1.5845 -0.8766
 -0.1809 -1.0035  1.7093  0.9176  1.6438
  1.6955  0.6816  0.5978 -0.1379 -0.3877
  1.0876  1.2371 -0.7378 -0.7647  0.0544
[torch.FloatTensor of size 3x4x5]

Tensor运算

x = torch.Tensor([1., 2., 3.])
y = torch.Tensor([4., 5., 6.])
z = x + y
print(z)
 5
 7
 9
[torch.FloatTensor of size 3]

[res] torch.cat( [res,] x_1, x_2, [dimension] )

x_1 = torch.randn(2, 5)
y_1 = torch.randn(3, 5)
z_1 =torch.cat([x_1, y_1])#没有最后一个参数,默认是0,则最终维度的第0维度为x_1与y_1第0维度的和,最终维度的其他维度不变.以下同理
print(z_1)

x_2 = torch.randn(2, 3)
y_2 = torch.randn(2, 5)
z_2 = torch.cat([x_2, y_2], 1)
print(z_2)
 0.6372  0.7380  0.9324  0.0626 -0.3678
 1.1819  2.1591  0.2445  0.0064  0.7760
-0.7765 -0.6797  0.1814  0.3948  1.7398
-0.2957 -0.6972  3.7052 -0.1943  0.4159
 0.7385 -0.2365  1.4243 -0.0044 -0.7645
[torch.FloatTensor of size 5x5]


-0.0256 -0.6597 -0.1897  0.4361  0.1680  0.6513 -0.0433 -1.5741
-1.4514  0.0949 -0.7783  0.8568 -0.8722  0.0364 -0.0998  0.9265
[torch.FloatTensor of size 2x8]

Tensor维度变型reshaping

x = torch.randn(2, 3, 4)
print(x)
(0 ,.,.) = 
  0.6294 -0.3965  1.3737  1.6951
 -0.5477 -1.5385 -0.0288  0.8104
 -0.4208 -0.4469  0.0184  0.9507

(1 ,.,.) = 
 -0.2843 -0.0695 -0.1747  2.3774
  1.1067  0.1980 -2.0712 -0.0670
 -1.4900  0.0716 -0.7605  0.4611
[torch.FloatTensor of size 2x3x4]```
view转换维数

print(x.view(2,12))#将234 -> 2*12

Columns 0 to 9
0.6294 -0.3965 1.3737 1.6951 -0.5477 -1.5385 -0.0288 0.8104 -0.4208 -0.4469
-0.2843 -0.0695 -0.1747 2.3774 1.1067 0.1980 -2.0712 -0.0670 -1.4900 0.0716

Columns 10 to 11
0.0184 0.9507
-0.7605 0.4611
[torch.FloatTensor of size 2x12]```

print(x.view(2,-1))#-1的话,意味着最后的相乘为维数,这里为2*之后的成绩
#和上面的一样
Columns 0 to 9 
 0.6294 -0.3965  1.3737  1.6951 -0.5477 -1.5385 -0.0288  0.8104 -0.4208 -0.4469
-0.2843 -0.0695 -0.1747  2.3774  1.1067  0.1980 -2.0712 -0.0670 -1.4900  0.0716

Columns 10 to 11 
 0.0184  0.9507
-0.7605  0.4611
[torch.FloatTensor of size 2x12]

Computation Graphs and Automatic Differentiation

x = autograd.Variable(torch.Tensor([1., 2., 3]), requires_grad=True)
print(x)
print(x.data)#.data显示具体数据
#找不同
Variable containing:
 1
 2
 3
[torch.FloatTensor of size 3]

 1
 2
 3
[torch.FloatTensor of size 3]
y = autograd.Variable( torch.Tensor([4., 5., 6]), requires_grad=True )
z = x + y
print(z.data)
 5
 7
 9
[torch.FloatTensor of size 3]

.creator是生成器

print(z.creator)
#因为是z = x + y 所以,z运算是add
<torch.autograd._functions.basic_ops.Add object at 0x10b04f128>

显示z中所有元素的和

s = z.sum()
print(s)
Variable containing:
 21
[torch.FloatTensor of size 1]
s.backward()#反向传播
print(x.grad)#对x求导
Variable containing:
 1
 1
 1
[torch.FloatTensor of size 3]
#答案解释
#x = [1,2,3]
#y = [4,5,6]
#z = x + y = [x0+y0, x1+y1, x2+y2]
#s = z.sum() = x0+y0+x1+y1+x2+y2
#x.grad 在s运算中对x求导   也就是当中的x0,x1,x2求导  为1,1,1 

Deep Learning Building Blocks: Affine maps, non-linearities and objectives

Affine maps
也可以说是线性映射,即为f(x) = Ax + b
nn.Linear(inputSize,outputSize,bias=True)
输入(N, inputSize)
输出(N, outputSize)

lin = nn.Linear(5,3)
data = autograd.Variable(torch.randn(2, 5))
print(lin(data))
Variable containing:
-0.1838 -0.1833 -0.6425
 0.2675  0.0263  0.0482
[torch.FloatTensor of size 2x3]

Non-Linearities
非线性,常用的函数有 tanh(x),σ(x),ReLU(x) 这些都是激励函数
在pytorch中大部分激励函数在torch.functional中

data = autograd.Variable( torch.randn(2, 2) )
print(data)
print (F.relu(data))#relu函数是小于零是0,大于零就是它本身
Variable containing:
-2.0620  1.4252
 0.5694  0.2251
[torch.FloatTensor of size 2x2]

Variable containing:
 0.0000  1.4252
 0.5694  0.2251
[torch.FloatTensor of size 2x2]

Softmax and Probabilities
softmax是x_i/sum(x)

data = autograd.Variable( torch.randn(5) )
print(data)
print(F.softmax(data))
print(F.softmax(data).sum())
print(F.log_softmax(data))
Variable containing:
 0.6861
 0.1695
-0.4775
-2.0097
 0.7039
[torch.FloatTensor of size 5]

Variable containing:
 0.3340
 0.1992
 0.1043
 0.0225
 0.3400
[torch.FloatTensor of size 5]

Variable containing:
 1
[torch.FloatTensor of size 1]

Variable containing:
-1.0967
-1.6133
-2.2604
-3.7925
-1.0789
[torch.FloatTensor of size 5]

欢迎关注深度学习自然语言处理公众号


图片发自简书App
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容

  • 猪八戒去花果山找孙悟空。孙悟空不在家妈妈热情的招待,猪八戒踩了山中最好吃的桃子,整整100个。猪八戒很高兴,请大家...
    云儿飘飘99阅读 100评论 0 0
  • 不走心的努力,都是看起来很努力。拼命做无用功的最大意义,不过是营造一个“我很努力”的幻觉,就是“用战术上的勤奋,掩...
    赵妖镜ZQ阅读 101评论 0 0
  • 每个人都会经历许多毕业,从一个学校毕业,从一段友情中毕业,从一段恋情中毕业。人的一生可以胜任很多个职位,但唯独胜任...
    QUEENst阅读 140评论 0 1
  • 女人都是喜欢美丽漂亮的,每个女人都渴望自己生活的能够幸福美好,但是一个女人过的好与不好,从这几点就能看出来。 从他...
    猴爸陪你读书阅读 521评论 0 1