pytorch基础教程1
0.迅速入门:根据上一个博客先安装好,然后终端python进入,import torch
************************************************************
1.pytorch数据结构
1)初始化方式:
eg1: 列表初始化:
data = [-1, -2, 1, 2] tensor = torch.FloatTensor(data) # 转换成32位浮点 tensor
data = [[1,2], [3,4]] tensor = torch.FloatTensor(data) # 转换成32位浮点 tensor
data = torch.FloatTensor([1,2,3])
eg2: numpy 到torch
import torch
import numpy as np
np_data = np.arange(6).reshape((2, 3))
torch_data = torch.from_numpy(np_data)
eg3: 直接用自带函数初始化
import torch
a=torch.rand(3,4)
b=torch.eye(3,4)
c=torch.ones(3,4)
d=torch.zeros(3,4)
x = torch.linspace(1, 10, 10)
eg4: 分配和其他相同size的内存,然后fill_
y = dist_an.data.new()
y.resize_as_(dist_an.data)
y.fill_(1)
eg5: 没有初始化,需要对其进行赋值操作
a = torch.Tensor(2,4)c = torch.IntTensor(2,3);print(c) -- 也可以指定类型
2)数据结构类型转换
eg1: cpu,gpu之间数据转换
d=b.cuda()
e=d.cpu()
net = Net().cuda()
eg2:numpy, torch转换
c=b.numpy()
b = torch.from_numpy(a)
eg3: torch转可导的Variable
y = Variable(y)
eg4: ByteTensor, FloatTensor转换
dtype = tensor.FloatTensor
# dtype = tensor.cuda.FloatTensor
x=torch.rand(3,4).type(dtype)
eg5: torch的Variable转tensor
y = y.data
************************************************************
2.哪些基本运算
矩阵乘法:torch.mm(tensor, tensor)
均值:torch.mean(tensor)
三角函数:np.sin(data)
绝对值:torch.abs(tensor)
************************************************************
3.哪些包,哪些函数
1)官网中文api:
2) 官网英文:
************************************************************
4. 反向传播例子:
a=Variable(torch.FloatTensor(torch.randn(2,2)),requires_grad=True)
b=a+2
c=b*b*3
out=c.mean()
out.backward()
a.grad()
************************************************************
5. 网络定义、训练、保存、恢复、打印网络(莫烦)
见下一个博客吧。参考博客1,博客2,博客3,莫烦,自定义function,module(重要), 自定义examples, (重要)拓新module,一个自定义的解释,自定义解释
1)无参数的:用function足矣
from torch.autograd import Function
import torch
from torch.autograd import Function class ReLUF(Function):
def forward(self, input):
self.save_for_backward(input) output = input.clamp(min=0)
return output def backward(self, output_grad):
input = self.to_save[0] input_grad = output_grad.clone()
input_grad[input < 0] = 0
return input_grad ## Test
if __name__ == "__main__":
from torch.autograd import Variable torch.manual_seed(1111)
a = torch.randn(2, 3) va = Variable(a, requires_grad=True)
vb = ReLUF()(va)
print va.data, vb.data vb.backward(torch.ones(va.size()))
print vb.grad.data, va.grad.data
2)有参数,先用function,然后用module+参数打包
step 1:
import torch
from torch.autograd import Function class LinearF(Function): def forward(self, input, weight, bias=None):
self.save_for_backward(input, weight, bias) output = torch.mm(input, weight.t())
if bias is not None:
output += bias.unsqueeze(0).expand_as(output) return output def backward(self, grad_output):
input, weight, bias = self.saved_tensors grad_input = grad_weight = grad_bias = None
if self.needs_input_grad[0]:
grad_input = torch.mm(grad_output, weight)
if self.needs_input_grad[1]:
grad_weight = torch.mm(grad_output.t(), input)
if bias is not None and self.needs_input_grad[2]:
grad_bias = grad_output.sum(0).squeeze(0) if bias is not None:
return grad_input, grad_weight, grad_bias
else:
return grad_input, grad_weight
step 2:
import torch
import torch.nn as nn class Linear(nn.Module): def __init__(self, in_features, out_features, bias=True):
super(Linear, self).__init__()
self.in_features = in_features
self.out_features = out_features
self.weight = nn.Parameter(torch.Tensor(out_features, in_features))
if bias:
self.bias = nn.Parameter(torch.Tensor(out_features))
else:
self.register_parameter('bias', None) def forward(self, input):
return LinearF()(input, self.weight, self.bias)
************************************************************
6.哪些教程
1)官网:
2)github:
3)莫烦的视频:
4)官网中文api:
5) 官网英文:
************************************************************
广告:
np_data = np.arange(6).reshape((2, 3))
start_time = time.time()
end_time = time.time() print("Spend time:", end_time - start_time)
pytorch基础教程1的更多相关文章
- pytorch基础教程2
1. 四部曲 1)forward; 2) 计算误差 :3)backward; 4) 更新 eg: 1)outputs = net(inputs) 2)loss = criterion(outputs, ...
- Note | PyTorch官方教程学习笔记
目录 1. 快速入门PYTORCH 1.1. 什么是PyTorch 1.1.1. 基础概念 1.1.2. 与NumPy之间的桥梁 1.2. Autograd: Automatic Differenti ...
- 【新生学习】第一周:深度学习及pytorch基础
DEADLINE: 2020-07-25 22:00 写在最前面: 本课程的主要思路还是要求大家大量练习 pytorch 代码,在写代码的过程中掌握深度学习的各类算法,希望大家能够坚持练习,相信经度过 ...
- matlab基础教程——根据Andrew Ng的machine learning整理
matlab基础教程--根据Andrew Ng的machine learning整理 基本运算 算数运算 逻辑运算 格式化输出 小数位全局修改 向量和矩阵运算 矩阵操作 申明一个矩阵或向量 快速建立一 ...
- <<Bootstrap基础教程>> 新书出手,有心栽花花不开,无心插柳柳成荫
并非闲的蛋疼,做技术也经常喜欢蛋疼,纠结于各种技术,各种需求变更,还有一个很苦恼的就是UI总是那么不尽人意.前不久自己开源了自己做了多年的仓储项目(开源地址:https://github.com/he ...
- Memcache教程 Memcache零基础教程
Memcache是什么 Memcache是danga.com的一个项目,来分担数据库的压力. 它可以应对任意多个连接,使用非阻塞的网络IO.由于它的工作机制是在内存中开辟一块空间,然后建立一个Hash ...
- Selenium IDE 基础教程
Selenium IDE 基础教程 1.下载安装 a 在火狐浏览其中搜索附件组件,查找 Selenium IDE b 下载安装,然后重启firefox 2.界面讲解 在菜单- ...
- html快速入门(基础教程+资源推荐)
1.html究竟是什么? 从字面上理解,html是超文本标记语言hyper text mark-up language的首字母缩写,指的是一种通用web页面描述语言,是用来描述我们打开浏览器就能看到的 ...
- 转发-UI基础教程 – 原生App切图的那些事儿
UI基础教程 – 原生App切图的那些事儿 转发:http://www.shejidaren.com/app-ui-cut-and-slice.html 移动APP切图是UI设计必须学会的一项技能,切 ...
随机推荐
- Js replace() 方法笔记
最近捣鼓着学习Js,发现replace()真的很有用,替换功能杠杠的棒. 接下来看看我遇到的问题: 有两个随机给出的字符串,字符串1'xxxxxx',字符串2'====T'(这两个用作示例,其他为随机 ...
- Java语言中的值传递与引用传递
Java应用程序中永远不会传递对象,而只会传递对象应用,因此,按对象引用传递. (1) Int作为参数传递时,对形参值得修改不会影响到实参: (2) StringBuffer作为参 ...
- [LeetCode] 94. Binary Tree Inorder Traversal(二叉树的中序遍历) ☆☆☆
二叉树遍历(前序.中序.后序.层次.深度优先.广度优先遍历) 描述 解析 递归方案 很简单,先左孩子,输出根,再右孩子. 非递归方案 因为访问左孩子后要访问右孩子,所以需要栈这样的数据结构. 1.指针 ...
- RCNN 目标识别基本原理
RCNN- 将CNN引入目标检测的开山之作 from:https://zhuanlan.zhihu.com/p/23006190 前面一直在写传统机器学习.从本篇开始写一写 深度学习的内容. 可能需要 ...
- Python3组播通信编程实现教程(发送者+接收者)
一.说明 1.1 标准组播解释 通信分为单播.多播(即组播).广播三种方式 单播指发送者发送之后,IP数据包被路由器发往目的IP指定的唯一一台设备的通信形式,比如你现在与web服务器通信就是单播形式 ...
- cin.get()函数使用例子
#include <iostream>using namespace std; int k = 0; int main(){ char a[1000]; char c; do { cin. ...
- decltype的参数是左值时,得到一个引用类型
int* a = new int(10); decltype(*a) 得到的是引用类型:int&
- POJ 1390 Blocks(记忆化搜索+dp)
POJ 1390 Blocks 砌块 时限:5000 MS 内存限制:65536K 提交材料共计: 6204 接受: 2563 描述 你们中的一些人可能玩过一个叫做“积木”的游戏.一行有n个块 ...
- laravel的firstOrCreate的作用:先查找表,如果有就输出数据,如果没有就插入数据
public function zan(Post $post){ $param=[ 'user_id'=>\Auth::id(), 'post_id'=>$post->id ] Za ...
- Json使用示例
使用Json,可以下载如下所示的6个Jar包 整个工程目录结构如下: 简单的用法: package json; import net.sf.json.JSONArray; import net.sf. ...