前几天结束了机器学习的入门,难点不多,很多东西更像是为学深度学习打基础,然后这几天在学深度学习,刚开始基本还是机器学习学过的基础东西,到了后面各种算法的公式推导和底层原理,加之自己的状态不是很好(最近还是感觉蛮空虚的哈哈哈) ,所以根本学不进去(难点就是这样,少有分心便要听不懂了),所以我直接跳过了大部分的公式推导,不求甚解(现在才知道第一遍学的时候应当如此),大概了解算法的基本原理和干什么的就行,然后我迷迷糊糊看了几天吴恩达老师的深度学习的课之后,就开始学pytorch了,先敲起来,用实践带动理,后面用到什么学什么吧。
什么是 PyTorch?
PyTorch 是一个基于 Python 的科学计算包,主要定位两类人群:
开始学习
Tensors 类似于 NumPy 的 ndarrays ,同时 Tensors 可以使用 GPU 进行计算。
- from __future__ import print_function
- import torch
-
- #构造一个5x3矩阵,不初始化。
- # x=torch.empty(5,3)
- # print(x)
-
- #构造一个随机初始化的矩阵:
- # x=torch.rand(5,3)
- # print(x)
-
- #构造一个矩阵全为 0,而且数据类型是 long.
- # x=torch.zeros(5,3,dtype=torch.long)
- # print(x)
-
- #构造一个张量,直接使用数据:
- # x = torch.tensor([5.5, 3])
- # print(x)
-
- #创建一个 tensor 基于已经存在的 tensor。
- # x = x.new_ones(5, 3, dtype=torch.double)
- # new_* methods take in sizes
- #print(x)
-
- #x = torch.randn_like(x, dtype=torch.float)
- # override dtype!
- # print('x:',x)
- # result has the same size
-
- #获取它的维度信息:
- #print(x.size())
-
- ################################## 加法:
- # y=torch.rand(5,3)
- # print('y:',y)
- #方式一:
- #print(x+y)
- #方式二:
- #print(torch.add(x,y))
-
- #加法: 提供一个输出 tensor 作为参数
- # result=torch.empty(5,3)
- # torch.add(x,y,out=result)
- #print(result)
-
- #加法: in-place
- # adds x to y
- # y.add_(x)
- # print(y)
-
- # adds x to y
- # y.add_(x)
- # print(y)
-
- # 注意 任何使张量会发生变化的操作都有一个前缀 '_'。例如:
- #即把y复制到x
- #x.copy_(y)
- #print('x after x.copy_(y):',x)
-
- #转置
- #print('x转置:',x.t_())
- #你可以使用标准的 NumPy 类似的索引操作
- #所有行,第二列
- #print(x[:,1])
- #第二行,所有列
- #print(x[1,:])
-
- #改变大小:如果你想改变一个 tensor 的大小或者形状,你可以使用 torch.view
- # x = torch.randn(4, 4)
- # #1行16列
- # y = x.view(16)
- # #print(y)
- # z = x.view(-1, 8) # the size -1 is inferred from other dimensions
- # print(x.size(), y.size(), z.size())
-
- '''
- torch.randn:用来生成随机数字的tensor,这些随机数字满足标准正态分布(0~1)。
- torch.randn(size),size可以是一个整数,也可以是一个元组。
- '''
- x = torch.randn(2)
- print(x)
- x=torch.randn(2,3)
- print(x)
- #.item()用于在只包含一个元素的tensor中提取值,注意是只包含一个元素,否则的话使用.tolist()
- x=torch.randn(1)
- print(x.item())