tensor

TensorFlow学习

孤街醉人 提交于 2020-03-22 18:24:26
Tensorflow安装 总体来说还是要废好大周折的,捣鼓了两三天,可算是整完了,现在装大多装的是tensorflow2.0,官网提供的测试代码可能无法运行。起初不知,不知因为这个问题重装了多少遍,感觉电脑要被我整废了。。。。装的版本分为两个:cpu 、gpu。 cpu: 这个比较好办,但根据教程,(为保险起见)需要先装(必须是专业版)VS 2015 或者 VS2017 ,之后在VS中装入C++工具包。成功之后,根据官网所说,打开cmd,先将pip upgrade到最新版本,之后 install tensorflow,就可以啦。 gpu: 可能需要废些周章,需要另在自行安装cuda(前提是电脑拥有NVIDIA显卡并且支持gpu加速)、cuDNN(版本要与cuda匹配),并且配置好变量。详情见以下视频链接: https://www.bilibili.com/video/av70734671/?spm_id_from=333.788.videocard.2 安装好之后,运行以下代码进行检测,如结果如下则GPU版本安装成功了: import tensorflow as tf import os os.environ['TF_CPP_MIN_LOG_LEVEL']='2' a = tf.constant(1.) b = tf.constant(2.) print(a+b) print(

Python tensor matrix multiply

我的未来我决定 提交于 2020-03-21 07:00:11
问题 I have the tensor A = [[[a,b], [c,d]], [[e,f], [g,h]]] and the matrix B = [[1,2], [3,4]] I need to get C = [[a*1+e*2,b*1+f*2], [c*3+g*4,d*3+h*4]] How can I do this using numpy in matrix form? I've looked into np.tensordot() but it doesn't seem to help in this case. 回答1: You can try this: >>> import numpy as np >>> a = np.arange(1,9).reshape(2,2,2) >>> a array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) >>> b = np.arange(1,5).reshape(2,2) >>> b array([[1, 2], [3, 4]]) >>> (a * b[None,:,:].T).sum

Pytorch reshape tensor dimension

a 夏天 提交于 2020-03-17 09:53:07
问题 For example, I have 1D vector with dimension (5). I would like to reshape it into 2D matrix (1,5). Here is how I do it with numpy >>> import numpy as np >>> a = np.array([1,2,3,4,5]) >>> a.shape (5,) >>> a = np.reshape(a, (1,5)) >>> a.shape (1, 5) >>> a array([[1, 2, 3, 4, 5]]) >>> But how can I do that with Pytorch Tensor (and Variable). I don't want to switch back to numpy and switch to Torch variable again, because it will loss backpropagation information. Here is what I have in Pytorch >>

学习pytorch的小记录

ぐ巨炮叔叔 提交于 2020-03-17 09:47:56
学习pytorch的小记录 原教程地址 1.PyTorch神经网络简介 1.1 计算梯度 1.2 这一部分的可运行代码贴在下面 2.训练一个分类器 2.1 如何进行数据处理 2.2 训练的步骤 2.3 数据处理 目前暂时后面的还没看完~ 原教程地址 PyTorch简明教程 1.PyTorch神经网络简介 1.1 计算梯度 那里是有一点不太明白的记录一下。 在调用loss.backward()之前,我们需要清除掉tensor里之前的梯度,否则会累加进去。 net . zero_grad ( ) # 清掉tensor里缓存的梯度值。 print ( 'conv1.bias.grad before backward' ) print ( net . conv1 . bias . grad ) loss . backward ( ) print ( 'conv1.bias.grad after backward' ) print ( net . conv1 . bias . grad ) 这一段的 loss . backward ( ) 这个语句的功能在学习的时候是不太明白的,以后懂了再来填坑 1.2 这一部分的可运行代码贴在下面 from __future__ import print_function import torch import torch . nn as nn

Tensorflow学习笔记(1)

半世苍凉 提交于 2020-03-16 23:01:43
一.背景   本人学习Tensorflow是为了完成毕业设计的工作,之前并没有用过其他的深度学习平台,Tensorflow作为当前很流行的一个平台,无论是教学文档,还是使用其开发的工程,这些资源都是很丰富的,所以很适合新手来进行入门。Tensorflow的具体背景我就不过多的介绍了,网上有很多的资源。另外我写这一系列博客的目的是激励自己吧,逼着自己学得更透彻一点,毕竟会用和能熟悉的写成教程还是两码事,希望自己能坚持下去。 2.Tensorflow安装   我使用的是自己的笔记本电脑,配置是i7-6700hq + GTX1066,系统是Ubuntu 16.04。Tensorflow相对来说还是比较容易安装的,其中安装CUDA和Cudnn比较费劲,但网上的教程也很多,去搜一下就可以了。我是使用Anaconda的方式安装的Tensorflow,因为我之前使用的都是python3.5,但是我要跑得tensorflow项目都是基于2.7的版本,为了防止两种python版本冲突之类的事情发生,我选择使用anaconda。anaconda用来管理python包是一种很强大的存在,推荐大家使用。之后的安装就很简单的,激活一个环境,使用pip安装即可。 3.Tensorflow基本使用 Tensorflow是通过如下方式进行计算的: 使用图(graph)来表示计算任务 在会话(Session

Expected object of backend CPU but got backend CUDA 报错解决方法---torchSnooper

喜夏-厌秋 提交于 2020-03-12 04:37:06
这种问题调试起来很麻烦,因为你不知道从哪里开始出问题的,比如你可能在代码的第三行用torch.zeros新建了一个cpu tensor,然后这个tensor进行了若干运算,全是在cpu上进行的,一直没有报错,直到第10行需要跟你作为输入传进来的CUDAtensor 进行运算的时候,才报错。要调试这种错误,有时候就不得不一行行地手写print语句,非常麻烦。 TorchSnooper就是一个设计了用来解决这个问题的工具,安装: pip install torchsnooper 安装完之后,只需要用@torchsnooper.snoop()装饰一下要调试的函数,这个函数在执行的时候,就会自动print出来每一行的执行结果的tensor的形状,数据类型,设备是否需要梯度的信息。 import torchsnooper @torchsnooper.snoop() def create_window(window_size: int, sigma: float, channel: int): ''' Create 1-D gauss kernel :param window_size: the size of gauss kernel :param sigma: sigma of normal distribution :param channel: input channel

PyTorch的Autograd: 自动微分

被刻印的时光 ゝ 提交于 2020-03-10 23:47:54
原文出自 http://studyai.com/pytorch-1.4/beginner/blitz/autograd_tutorial.html 在PyTorch的所有神经网络中,核心是 autograd 包。让我们先简单介绍一下, 然后我们将开始训练我们的第一个神经网络。 autograd package 为张量上的所有操作提供自动微分(automatic differentiation)。 它是一个按运行定义的框架(define-by-run framework), 这意味着您的后端(backprop)由您的代码运行方式来定义,并且每个迭代都可能是不同的。 让我们用更简单的术语来看这一点,并举几个例子。 张量(Tensor) torch.Tensor 是此package的核心类。 如果你将它的属性 .requires_grad 设置为 True, 它就开始跟踪在它上面的所有运算操作。当你完成计算时你可以调用 .backward() , 这会使得所有的梯度都被自动计算出来。对于这个tensor的梯度将会被累加到 .grad 属性中去。 如果想要阻止一个tensor不去跟踪历史(tracking history), 你可以调用 .detach() 方法 把它从计算历史中分离出来, 并且会阻止进一步的计算被跟踪。 若要防止跟踪历史记录(并使用内存),还可以把代码块封装在with语句

PyTorch的张量是什么?

一个人想着一个人 提交于 2020-03-10 23:28:00
这是一个基于Python的科学计算包,针对两组受众: 想要替换NumPy从而使用GPU的计算能力 提供最大灵活性和速度的深度学习研究平台 开始走起 Tensors Tensors 类似于NumPy的 ndarrays, 另外,它还可以在GPU上使用加速计算。 from future import print_function import torch 构建一个 5x3 矩阵, 未初始化: x = torch.empty(5, 3) print(x) 构建一个随机初始化的矩阵: x = torch.rand(5, 3) print(x) 创建一个矩阵,用 0 填充,数据类型为 long: x = torch.zeros(5, 3, dtype=torch.long) print(x) 直接从已有的数据(不是Tensor类型)创建一个矩阵: x = torch.tensor([5.5, 3]) print(x) 或者基于一个已有的tensor创建一个新的tensor。这类方法将会重用 输入tensor的属性, e.g. dtype, 除非用户提供了新的属性值 x = x.new_ones(5, 3, dtype=torch.int) # new_* 方法需要接受 sizes 参数 print(x) x = torch.randn_like(x, dtype=torch.float) #

【转载】 tensorflow中 tf.train.slice_input_producer 和 tf.train.batch 函数

二次信任 提交于 2020-03-07 06:39:15
原文地址: https://blog.csdn.net/dcrmg/article/details/79776876 ------------------------------------------------------------------------------------------------------------------ tensorflow数据读取机制 tensorflow中为了充分利用GPU,减少GPU等待数据的空闲时间,使用了两个线程分别执行数据读入和数据计算。 具体来说就是使用一个线程源源不断的将硬盘中的图片数据读入到一个内存队列中,另一个线程负责计算任务,所需数据直接从内存队列中获取。 tf在内存队列之前,还设立了一个文件名队列,文件名队列存放的是参与训练的文件名,要训练 N个epoch,则文件名队列中就含有N个批次的所有文件名。 示例图如下: 图片来至于 https://zhuanlan.zhihu.com/p/27238630 ) 在N个epoch的文件名最后是一个结束标志,当tf读到这个结束标志的时候,会抛出一个 OutofRange 的异常,外部捕获到这个异常之后就可以结束程序了。而创建tf的文件名队列就需要使用到 tf.train.slice_input_producer 函数。 tf.train.slice_input_producer

pytorch学习

雨燕双飞 提交于 2020-03-07 01:55:39
学习地址 中文文档: https://pytorch-cn.readthedocs.io/zh/latest/ https://zhuanlan.zhihu.com/p/99318332 (60题PyTorch简易入门指南) https://www.kesci.com/home/project/5e0036722823a10036ae9d1d (深度学习之PyTorch实战-基础学习及搭建环境) 下面代码地址 %matplotlib inline https://github.com/MorvanZhou/PyTorch-Tutorial https://morvanzhou.github.io/tutorials/ 201torch-numpy import torch torch_data = torch . from_numpy ( np_data ) #torch.from_numpy:array转换成tensor向量 tensor2array = torch_data . numpy ( ) #data.numpy():tensor向量转换成array '''转化为tensor''' tensor = torch . FloatTensor ( data ) # 32-bit floating point '''计算''' np . 和torch。类似 torch .