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. docker系列(1)- 配置

    参考自:https://www.jianshu.com/p/81bf5efff8e0

  2. Centos 7最小化部署apollo

    https://github.com/nobodyiam/apollo-build-scripts

  3. EF CodeFirst系列(4)--- 数据注释属性

    EFCodeFirst模式使用的是约定大于配置的编程模式,这种模式利用默认约定根据我们的领域模型建立概念模型.然后我们也可以通过配置领域类来覆盖默认约定. 覆盖默认约定主要用两种手段: 1.数据注释属 ...

  4. 第十六节: EF的CodeFirst模式通过Fluent API修改默认协定

    一. 简介 1. 优先级:Fluent API > data annotations > default conventions. 2. 所有的Fluent API配置都要在 OnMode ...

  5. django登录

    一. form表单使用注意事项: 1. action="" 提交地址, method='post' 请求方式 2. input 标签要有name属性才能被获取 3. 有一个inpu ...

  6. ES7 and ES8 特性

    ES7 特性:1.Array.prototype.includes let arr = ['react', 'angular', 'vue'] // Correct if (arr.includes( ...

  7. Centos 06 文件类型和扩展名&索引节点inode和存储块block

    本节内容 1.文件类型 2.文件扩展名 3.索引节点inode和block块 首先需要申明一点, 1.在linux里面文件扩展名和文件类型是没有关系的 2.为了容易区分和兼容用户使用windows的习 ...

  8. python爬虫解决编码问题

    参考 https://blog.csdn.net/qq_38008452/article/details/80423436 问题 解决方法 加上encoding='utf-8'

  9. saltstack 入门

    1.Saltstack是什么? saltstack 是一个异构平台基础设施管理工具,具有远程执行.配置管理.云管理.只需花费数分钟就可以运行起来,扩展性足以支撑上万台服务器,速度快,服务器之间秒级通讯 ...

  10. 字符串(3)AC自动机

    AC自动机真神奇,其实说白了就是在trie树上进行kmp模式匹配,不过刚接触确实有些难度,有些思想确实有些难以理解,所以学习的时候最好亲自手动模拟整个算法的全过程,那我就来写篇blog总结一下. 首先 ...