ipdb介绍

1、现在IPython之外使用debug功能,则需要安装ipdb(pip install ipdb),而后在需要进入调试的地方加上如下代码即可:
import ipdb
ipdb.set_trace()
2、命令 功能
h(elp) 显示帮助信息,help command显示这条命令的帮助信息
u(p) 在函数调用栈中向上移动
d(own) 在函数调用栈中向下移动
n(ext) 单步执行,执行下一步
s(tep) 单步进入当前函数调用
a(rgs) 查看当前函数调用函数的参数
l(ist) 查看当前行的上下文参考代码
b(reak) 在指定位置上设置断点
q(uit) 退出

Tensor

1、Tensor是Pytorch中重要的数据结构,可认为是一个高维数组。它可以是一个数(标量)、一维数组(向量)、二维数组(矩阵)或更高维的数组。Tensor和numpy的ndarrays类似,但Tensor可以使用GPU加速。
2、
from __future__ import print_function
import torch as t
x = t.Tensor(5,3) #构建5*3矩阵,知识分配了空间,未初始化
print(x)
'''
tensor([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]])'''
y = t.rand(5,3) #使用[0,1]均匀分布随机初始化二维数组
print(y)
'''
tensor([[0.3983, 0.0989, 0.8022],
[0.9680, 0.2788, 0.1616],
[0.3899, 0.2543, 0.4690],
[0.9473, 0.0335, 0.0624],
[0.0165, 0.0607, 0.0305]])'''
print(x.size()) # 查看对应x的形状
'''torch.Size([5, 3])'''
print(x.size()[0],x.size()[1],x.size(0),x.size(1)) #查看行列的个数,两种写法等价
'''5 3 5 3'''
print(t.Size([5,3]))
'''torch.Size([5, 3])''' z = t.rand(5,3)
print(z)
'''tensor([[0.3366, 0.2013, 0.1291],
[0.4020, 0.8494, 0.6037],
[0.4871, 0.9674, 0.3913],
[0.7931, 0.3871, 0.0373],
[0.6214, 0.7268, 0.0464]])'''
print(y+z) #加法的第一种写法
'''tensor([[0.4665, 0.5607, 0.7849],
[0.9006, 0.8770, 1.6009],
[1.0767, 1.6093, 1.1122],
[1.5288, 1.2140, 0.9973],
[1.4622, 0.8714, 0.8820]])''' w = t.add(y,z) #加法的第二种写法
print(w)
'''tensor([[0.4665, 0.5607, 0.7849],
[0.9006, 0.8770, 1.6009],
[1.0767, 1.6093, 1.1122],
[1.5288, 1.2140, 0.9973],
[1.4622, 0.8714, 0.8820]])'''
#加法的第三种写法
result = t.Tensor(5,3) #预先分配空间
t.add(y,z,out = result)
print(result)
'''tensor([[0.4665, 0.5607, 0.7849],
[0.9006, 0.8770, 1.6009],
[1.0767, 1.6093, 1.1122],
[1.5288, 1.2140, 0.9973],
[1.4622, 0.8714, 0.8820]])''' print('开始的y:',y)
y.add(z) #普通加法,y没变
print('第一种加法的y:',y)
y.add_(z) #inplace加法,y变了
print('第二种加法的y:',y)
'''开始的y: tensor([[0.4149, 0.4725, 0.1777],
[0.0475, 0.6963, 0.2613],
[0.9333, 0.9892, 0.8785],
[0.4695, 0.9405, 0.2004],
[0.4407, 0.8078, 0.7087]])
第一种加法的y: tensor([[0.4149, 0.4725, 0.1777],
[0.0475, 0.6963, 0.2613],
[0.9333, 0.9892, 0.8785],
[0.4695, 0.9405, 0.2004],
[0.4407, 0.8078, 0.7087]])
第二种加法的y: tensor([[1.1393, 0.8658, 0.7856],
[0.2293, 1.4834, 0.6079],
[1.3816, 1.5985, 1.4196],
[1.3364, 1.1972, 0.7479],
[1.0835, 0.9564, 1.5608]])''' #Tensor 的选取操作和numpy类似
print(y)
print(y[:,1])
print(y[1,:])
'''tensor([[0.4012, 0.9539, 0.8259],
[1.1718, 0.8311, 0.1424],
[0.7629, 0.8057, 1.1800],
[0.8089, 0.5383, 1.4055],
[0.7234, 1.0019, 1.2501]])
tensor([0.9539, 0.8311, 0.8057, 0.5383, 1.0019])
tensor([1.1718, 0.8311, 0.1424])''' a = t.ones(5)
print(a)
'''tensor([1., 1., 1., 1., 1.])'''
b = a.numpy() #Tensor->numpy
print(b)
'''[1. 1. 1. 1. 1.]''' import numpy as np
a = np.ones(5)
b = t.from_numpy(a) # numpy->Tensor
print(a)
print(b)
'''[1. 1. 1. 1. 1.]
tensor([1., 1., 1., 1., 1.], dtype=torch.float64)''' #Tensor和numpy对象共享内存,所以他们之间转换很快,而且几乎不会消耗资源,但是其中一个变了,另一个也随之改变
b.add_(1)
print(a)
print(b)
'''[2. 2. 2. 2. 2.]
tensor([2., 2., 2., 2., 2.], dtype=torch.float64)''' if t.cuda.is_available(): #Tensor 通过.cuda方法转为GPU的Tensor,从而享受GPU带来的加速运算
y = y.cuda()
z = z.cuda()
print(y+z)

2018-10-05 15:54:47

ipdb介绍及Tensor的更多相关文章

  1. Pytorch-创建tensor

    引言 本篇介绍创建tensor的几种方式 Import from numpy from_numpy() float64 是 double 类型,也就是说从numpy导入的float其实是double类 ...

  2. 0803-PyTorch的Debug指南

    0803-PyTorch的Debug指南 目录 一.ipdb 介绍 二.ipdb 的使用 三.在 PyTorch 中 Debug 四. 通过PyTorch实现项目中容易遇到的问题 五.第八章总结 py ...

  3. Tensorflow从入门到精通之——Tensorflow基本操作

    前边的章节介绍了什么是Tensorflow,本节将带大家真正走进Tensorflow的世界,学习Tensorflow一些基本的操作及使用方法.同时也欢迎大家关注我们的网站和系列教程:http://ww ...

  4. maskrcnn_benchmark代码分析(2)

    maskrcnn_benchmark训练过程 ->训练命令: python tools/train_net.py --config-file "configs/e2e_mask_rcn ...

  5. 动手学深度学习1- pytorch初学

    pytorch 初学 Tensors 创建空的tensor 创建随机的一个随机数矩阵 创建0元素的矩阵 直接从已经数据创建tensor 创建新的矩阵 计算操作 加法操作 转化形状 tensor 与nu ...

  6. pytorch 自动求梯度

    自动求梯度 在深度学习中,我们经常需要对函数求梯度(gradient).PyTorch提供的autograd包能够根据输入和前向传播过程自动构建计算图,并执行反向传播.本节将介绍如何使用autogra ...

  7. Pytorch Autograd (自动求导机制)

    Pytorch Autograd (自动求导机制) Introduce Pytorch Autograd库 (自动求导机制) 是训练神经网络时,反向误差传播(BP)算法的核心. 本文通过logisti ...

  8. MindSpore静态图语法支持

    MindSpore静态图语法支持 概述 在Graph模式下,Python代码并不是由Python解释器去执行,而是将代码编译成静态计算图,然后执行静态计算图. 关于Graph模式和计算图,可参考文档: ...

  9. [PyTorch 学习笔记] 1.2 Tensor(张量)介绍

    本章代码: https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson1/tensor_introduce1.py https: ...

随机推荐

  1. grafana-Admin密码重置

    1)查看Grafana配置文件,确定grafana.db的路径 [paths] ;data = /var/lib/grafana [database] # For "sqlite3" ...

  2. IPC$概念及入侵方式研究

    catalogue . 什么是IPC$ . IPC$攻击方式 . 漏洞检测与防御措施 1. 什么是IPC$ IPC$(空会话连接)是windows系统内置的一个功能模块,它的作用有很多(包括域帐号枚举 ...

  3. redis发布/订阅

    发布订阅简介 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息,消息之间通过channel传递. 准备工作 两台安装了redis的机器(虚拟 ...

  4. Django对于模型的数据操作

    一.引入模型的包 from myApp.models import Grades,Students 二.查询所有数据 #objecs是类的隐藏属性:类名.objects.all()可以查询所有数据 G ...

  5. dos.orm

    引言: Dos.ORM(原Hxj.Data)于2009年发布.2015年正式开源,该组件已在数百个成熟项目中应用,是目前国内用户量最大.最活跃.最完善的国产ORM.初期开发过程中参考了NBear与My ...

  6. Easy RM to MP3 Converter栈溢出定位及漏洞利用

    本文主要是Easy RM to MP3 Converter(MFC++编写)栈溢出的定位及windows下shellcode编写的一些心得. 用到的工具及漏洞程序下载地址https://github. ...

  7. 帆软报表(finereport)常用函数

    1. SUM SUM(number1,number2,…):求一个指定单元格区域中所有数字之和.Number1,number2,…:1到30个参数或指定单元格区域中所有数字. 注: 函数将直接键入参数 ...

  8. Python-Django 视图层

    1 request对象 method:请求方式 GET:get请求的参数(post请求,也可以携带参数) POST:post请求的参数(本质是从bdoy中取出来,放到里面了) COOKIES---&g ...

  9. 三目算法、if/else,switch/case运用

    //输入学生的成绩,判断考试是否及格,及格6大于等于0 //第一种写法:三目运算 大多用于单独判断是否满足某个条件 import java.util.Scanner; public class Hel ...

  10. Everything工具使用

    一.简介 Everything : Windows下的文件名搜索引擎 二.Everything工具下载 官方最新版本下载 Everything下载 三.Everything快捷搜索 Java*.doc ...