ipdb介绍及Tensor
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的更多相关文章
- Pytorch-创建tensor
引言 本篇介绍创建tensor的几种方式 Import from numpy from_numpy() float64 是 double 类型,也就是说从numpy导入的float其实是double类 ...
- 0803-PyTorch的Debug指南
0803-PyTorch的Debug指南 目录 一.ipdb 介绍 二.ipdb 的使用 三.在 PyTorch 中 Debug 四. 通过PyTorch实现项目中容易遇到的问题 五.第八章总结 py ...
- Tensorflow从入门到精通之——Tensorflow基本操作
前边的章节介绍了什么是Tensorflow,本节将带大家真正走进Tensorflow的世界,学习Tensorflow一些基本的操作及使用方法.同时也欢迎大家关注我们的网站和系列教程:http://ww ...
- maskrcnn_benchmark代码分析(2)
maskrcnn_benchmark训练过程 ->训练命令: python tools/train_net.py --config-file "configs/e2e_mask_rcn ...
- 动手学深度学习1- pytorch初学
pytorch 初学 Tensors 创建空的tensor 创建随机的一个随机数矩阵 创建0元素的矩阵 直接从已经数据创建tensor 创建新的矩阵 计算操作 加法操作 转化形状 tensor 与nu ...
- pytorch 自动求梯度
自动求梯度 在深度学习中,我们经常需要对函数求梯度(gradient).PyTorch提供的autograd包能够根据输入和前向传播过程自动构建计算图,并执行反向传播.本节将介绍如何使用autogra ...
- Pytorch Autograd (自动求导机制)
Pytorch Autograd (自动求导机制) Introduce Pytorch Autograd库 (自动求导机制) 是训练神经网络时,反向误差传播(BP)算法的核心. 本文通过logisti ...
- MindSpore静态图语法支持
MindSpore静态图语法支持 概述 在Graph模式下,Python代码并不是由Python解释器去执行,而是将代码编译成静态计算图,然后执行静态计算图. 关于Graph模式和计算图,可参考文档: ...
- [PyTorch 学习笔记] 1.2 Tensor(张量)介绍
本章代码: https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson1/tensor_introduce1.py https: ...
随机推荐
- Pandas系列(十三)-其他常用功能
一.统计数据频率 1. values_counts pd.value_counts(df.column_name) df.column_name.value_counts() Series.value ...
- 金融量化分析【day111】:Matplotib-绘制K线图
一.绘制k线图 1.使用金融包出错解决 1.错误代码 ImportError: No module named finance 2.解决办法 https://github.com/matplotlib ...
- JavaScript对象 Object类型基础
前言 JavaScript 对象是整个语言学习的一个难点.本文主要带大家入门学习Object知识 对象定义 javascript的基本数据类型包括undefined.null.boolean.stri ...
- LINUX涉及网络相关知识
才接触到网络的老铁,是否比较晕呢? 简单记录一下网络相关知识吧(IPV4)! A0. 网络号.主机号 A1.网络地址分类: A2. 保留地址: A3. 子网掩码作用:(子网掩码.IPV4地址做“与”运 ...
- Nginx web 服务器 安装篇
Nginx介绍: 静态web服务器有Nginx .Apache .lighttpd等 目前国内用的最常见的就是Nginx 和Apache 是一个开源的.支持高性能.高并发的www服务和代理服务软件,N ...
- (二)校园信息通微信小程序从后台获取首页的数据笔记
在从后台获取数据之前,需要先搭建好本地服务器的环境. 确保Apache,MySql处于开启状态.下图为Apache,MySql处于开启时状态 然后进入后台管理平台进行字段和列表的定义 然后在后台添加数 ...
- javascript基础 之 保留关键字
1,保留关键字 意思是:特定的字符串要么是已经有指代了要么是未来将要有指代,所以取名字不要用保留关键字里的字符串 js保留关键字 abstract arguments boolean break by ...
- word2vec概述
既然是概述,那么我也只会在文中谈一点关于 Word2Vec 的思想和大概的方法.对于这个算法,如果一开始学习就深入到算法细节中,反而会陷入局部极值点,最后甚至不知道这个算法是干嘛的.在了解算法大概的思 ...
- Django模型层-单表操作
ORM介绍 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的 ...
- 关于NB-IoT的十大问题和答案【转】
转自:https://blog.csdn.net/u011943791/article/details/80287053 今天大白来给各位解答一下关于NB-IoT的十大问题. 问1:NB-IoT模块还 ...