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. Python:正则表达式详解

    正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成,作为一个爬虫工作者,每天和字符串打交道,正则表达式更是不可或缺的技能,正则表达式的在不同的语言中使用方式可能 ...

  2. nginx第三方库安装以及连接memcache

    一.nginx第三方模块的安装 第三方模块查询地址:https://www.nginx.com/resources/wiki/modules/ 后来新出来一个nginx memcache增强版,有空可 ...

  3. Nginx故障排错及一个网站小实例

    Nginx访问403错误: 1.没有首页文件 2.没有权限 例:chmod  700 /application/nginx/html/index.html 3.nginx.conf配置文件和首页文件不 ...

  4. String.intern() 方法__jdk1.6与jdk1.7/jdk1.8的不同

    1.为什么要使用intern()方法 intern方法设计的初衷是为了重用string对象,节省内存 用代码实例验证下 public class StringInternTest { static f ...

  5. git中利用rebase来压缩多次提交 ----- 原文:https://blog.csdn.net/itfootball/article/details/44154121

    之前我们用git merge –squash来将分支中多次提交合并到master后,只保留一次提交历史.但是有些提交到github远程仓库中的commit信息如何合并呢? 使用下面的命令,最后一个数字 ...

  6. php session的用法

    初始 Session: session_start(). 存储 Session 变量:$_SESSION['name']='快聘100'; 调用Session:$name = $_SESSION['n ...

  7. 设计模式三: 代理模式(Proxy) -- JDK的实现方式

    简介 代理模式属于行为型模式的一种, 控制对其他对象的访问, 起到中介作用. 代理模式核心角色: 真实角色,代理角色; 按实现方式不同分为静态代理和动态代理两种; 意图 控制对其它对象的访问. 类图 ...

  8. Django之会议室预预订

    model表设计: from django.db import models from django.contrib.auth.models import AbstractUser # Create ...

  9. zookeep服务启动命令

    zookeeper的安装目录:/usr/local/zookeeper-3.4.6/bin/zkServer.sh; 配置文件路径:../conf/zoo.cfg 端口 :2181: ZooKeepe ...

  10. 【MYSQL】MYSQL报错解决方法: Warning: (3719, "'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8M B4 in a future release."

    用python3.6.5创建mysql库时出现如下报错,虽然报错,但是数据库可以插入成功. D:\python3\lib\site-packages\pymysql\cursors.py:170: W ...