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. saltstack主机管理项目:动态调用插件解析-模块解析(五)

    一.动态调用插件解析 1.目录结构 1.base_module代码解析: def syntax_parser(self,section_name,mod_name,mod_data): print(& ...

  2. Java实现AES加密

    一)什么是AES? 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),是一种区块加密标准.这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用. ...

  3. Jenkins-在windows上安装及其部署

    Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能.其主要功能:1.持续的软件版本发布/测试项目. ...

  4. SNMP源码分析之(一)配置文件部分

    snmpd.conf想必不陌生.在进程启动过程中会去读取配置文件中各个配置.其中几个参数需要先知道是干什么的: token:配置文件的每行的开头,例如 group MyROGroup v1 readS ...

  5. 使用kqueue的str_cli函数

    void str_cli(FILE *fp, int sockfd) { , isfile; char buf[MAXLINE]; ]; struct timespec ts; struct stat ...

  6. Linux中执行C++程序

    参考:https://blog.csdn.net/qq_31125955/article/details/79343498 https://blog.csdn.net/weixin_35477207/ ...

  7. 出现Failed to get convolution algorithm的解决方法

    当运行卷积神经时出现了问题:Failed to get convolution algorithm. This is probably because cuDNN failed to initiali ...

  8. 设计模式二: 工厂方法(Factory Method)

    简介 工厂方法模式是创建型模式的一种, 核心结构有四个角色: 抽象工厂,具体工厂,抽象产品,具体产品; 实现层面上,该模式定义一个创建产品的接口,将实际创建工作推迟到具体工厂类实现, 一个产品对应一个 ...

  9. Django之auth模块

    http://www.cnblogs.com/liwenzhou/p/9030211.html 1.首先导入auth模块 from django.contrib import auth 2.创建aut ...

  10. P5290 [十二省联考2019]春节十二响

    题目地址:P5290 [十二省联考2019]春节十二响 骗分方法 如果你实在一点思路也没有,暴力都不会打,那么请考虑一下骗分. 方法一 输出所有 \(M\) 的和. 期望得分:0分. 实际还有5分 方 ...