tensor

tf.base(constant & Variable)

倾然丶 夕夏残阳落幕 提交于 2020-01-30 00:19:31
tf2除了tf.keras这个高级api的引入之外,其他的一些基础函数也发生了一些变化,就连最为基本的constant也发生了一些变化,比如在1.x里面constant建立的数组是不支持列数不一样的数组组合的,但是在2.0的版本里面,引入了RaggedTensor这个数据类型,也就实现了不规则数据的组合 import tensorflow as tf from tensorflow import keras t = tf . ragged . constant ( [ [ 1 . , 2 . , 3 . ] , [ 4 . , 5 . ] ] ) print ( t ) 可以看到这里的数据类型是RaggedTensor,我们也可以通过t.to_tensor()这个函数来完成数据类型从RaggedTensor转变为Tensor型,RaggedTensor类型除了可以进行简单的加减乘除以外,还可以通过tf.concat()函数来进行数组之间的拼接 t1 = tf . ragged . constant ( [ [ 5 . , 6 . ] , [ 7 . , 8 . ] ] ) print ( tf . concat ( ( t , t1 ) , axis = 0 ) ) 因为RaggedTensor类型在转变成tensor类型的时候,位数不够的自动补0

TensorFlow之SparseTensor对象

三世轮回 提交于 2020-01-29 03:57:48
在TensorFlow中,SparseTensor对象表示稀疏矩阵。SparseTensor对象通过3个稠密矩阵indices, values及dense_shape来表示稀疏矩阵,这三个稠密矩阵的含义介绍如下: 1. indices:数据类型为int64的二维Tensor对象,它的Shape为[N, ndims]。indices保存的是非零值的索引,即稀疏矩阵中除了indices保存的位置之外,其他位置均为0。 2. values:一维Tensor对象,其Shape为[N]。它对应的是稀疏矩阵中indices索引位置中的值。 3. dense_shape:数据类型为int64的一维Tensor对象,其维度为[ndims],用于指定当前稀疏矩阵对应的Shape。 举个例子,稀疏矩阵对象SparseTensor(indices=[[0, 0],[1, 1]], value=[1, 1], dense_shape=[3, 3])对应的矩阵如下: [[1. 0. 0.] [0. 1. 0.] [0. 0. 0.]] 函数tf.sparse_tensor_to_dense用于将稀疏矩阵SparseTensor对象转换为稠密矩阵,函数tf.sparse_tensor_to_dense的原型如下: tf.sparse_tensor_to_dense( sp_input, default

pytorch_study

此生再无相见时 提交于 2020-01-28 11:28:56
文章目录 **1 资源汇总 ** 2 常见深度学习框架中的Tensor的通道顺序 **3 常见颜色通道顺序 1 PyTorch Tutorials 1: [入门-1 60分钟闪电战](https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html) 1.1 [什么是PyTorch](https://pytorch.org/tutorials/beginner/blitz/tensor_tutorial.html#sphx-glr-beginner-blitz-tensor-tutorial-py) 1.1.1 tensor 1.1.2 operations (1) 加法的语法: (2) tensor的索引与NumPy的索引类似 (3) 调整大小:torch.view (4) .item() 1.1.3 NumPy Bridge 1.1.4 Converting NumPy Array to Torch Tensor 将NumPy数组转换为Torch张量 1.1.5 CUDA Tensors 1.2 [Autograd: 自动分化](https://pytorch.org/tutorials/beginner/blitz/autograd_tutorial.html#sphx-glr-beginner

Tensorflow编程基础

时间秒杀一切 提交于 2020-01-28 03:04:12
tnesorflow中文社区 上介绍如下: TensorFlow™ 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。它灵活的架构让你可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU),服务器,移动设备等等。TensorFlow 最初由Google大脑小组(隶属于Google机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域。 Tensorflow可以理解一个开放源代码软件库,用于高性能数值计算。 Tensorflow概念 Tensorflow = tensor + flow Tensor 张量:数据结构为多维数组 Flow 流:计算模型,张量之间通过计算而转换的过程 Tensorflow是一个通过计算图的形式表述计算的编程系统,每一个计算都是计算图上的一个节点,节点之间的边描述了计算之间的关系 对照着下图: 什么是数据流图(Data Flow Graph)? 数据流图用“结点”(nodes)和“线”(edges)的有向图来描述数学计算。“节点” 一般用来表示施加的数学操作,但也可以表示数据输入(feed in)的起点/输出

【Pytorch学习笔记】一、创建Tensor的多种方法

天大地大妈咪最大 提交于 2020-01-27 18:06:45
创建Tensor的多种方法 从numpy创建 import torch import numpy as np a = np . array ( [ 2 , 3.3 ] ) a = torch . from_numpy ( a ) # torch.DoubleTensor 从list创建 a = torch . FloatTensor ( [ 2 , 3.3 ] ) # 尽量少用这种方式,容易和给shape的情况看混淆 b = torch . tensor ( [ 2 , 3.3 ] ) # 现有list时尽量用这种方式 注意小写的 tensor 只接受现有的数据;而大写的 Tensor 相当于就是 FloatTensor ,既可以接收现有的数据,也可以接受shape来创建指定形状的Tensor。 仅指定维度的初始化 前面都提供了里面元素的具体值,也可以按照shape来创建,而先不为其提供具体值。 # 生成2行3列的数据 a = torch . empty ( 2 , 3 ) b = torch . FloatTensor ( 2 , 3 ) c = torch . IntTensor ( 2 , 3 ) 修改tensor的默认类型 使用 torch.tensor 传入浮点数元素,或者使用 torch.Tensor 仅指定维度时,生成的默认是FloatTensor

tensorflow 2.0 深度学习(第四部分 循环神经网络)

落爺英雄遲暮 提交于 2020-01-26 19:46:23
基础知识 梯度传播相关原理 梯度传播原理 梯度弥散、梯度爆炸 >>> import tensorflow as tf >>> W = tf.ones([2,2]) # 任意创建某矩阵 >>> W <tf.Tensor: id=2, shape=(2, 2), dtype=float32, numpy= array([[1., 1.], [1., 1.]], dtype=float32)> >>> tf.linalg.eigh(W) (<tf.Tensor: id=3, shape=(2,), dtype=float32, numpy=array([0., 2.], dtype=float32)>, <tf.Tensor: id=4, shape=(2, 2), dtype=float32, numpy= array([[-0.70710677, 0.70710677], [ 0.70710677, 0.70710677]], dtype=float32)>) >>> tf.linalg.eigh(W)[0] # 计算特征值:此时的W矩阵的最大特征值为2,那么下面演示的是最大特征值大于1时的矩阵相乘 <tf.Tensor: id=5, shape=(2,), dtype=float32, numpy=array([0., 2.], dtype=float32)> >>> tf

tensorflow高阶操作

烈酒焚心 提交于 2020-01-25 19:36:14
本篇内容有:如何根据坐标有目的的选择(where)、如何根据坐标有目的的更新(scatter_nd)、如何生成一个坐标系() 1.where where针对的tensor是一个bool类型的tensor,即元素都由True或False组成,where(tensor)返回元素为True的位置 # 随机生成符合正态分布的[3,3]的tensor a = tf.random.normal([3,3]) print(a) # 将其对应的bool矩阵赋值给mask mask = a>0 print(mask) # 通过mask取到true对应的a的元素值 print(tf.boolean_mask(a,mask)) # 通过where获取true的位置 indices = tf.where(mask) print(indices) # 通过indices从a中取元素 print(tf.gather_nd(a,indices)) print(mask) # 定义A tensor元素全为1 A = tf.ones([3,3]) # 定义B tensor元素全为0 B = tf.zeros([3,3]) # 采样时取A上的true B上的false print(tf.where(mask,A,B)) 2.scatter_nd # 指定更新值的index indices = tf.constant(

深度学习

六眼飞鱼酱① 提交于 2020-01-25 19:06:04
神经网络中激活函数的作用: a. 不使用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合。 b. 使用激活函数,能够给神经元引入非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以利用到更多的非线性模型中。 激活函数需要具备以下几点性质: 连续并可导(允许少数点上不可导)的非线性函数。可导的激活函数可以直接利用数值优化的方法来学习网络参 数。 激活函数及其导函数要尽可能的简单,有利于提高网络计算效率。 激活函数的导函数的值域要在一个合适的区间内,不能太大也不能太小,否则会影响训练的效率和稳定性。 Caffe Caffe是纯粹的C++/CUDA架构,支持命令行、Python和MATLAB接口; 可以在CPU和GPU直接无缝换:Caffe::set_mode(Caffe::GPU); 在Caffe中图层需要使用C++定义,而网络则使用Protobuf定义。Caffe是一个深度卷积神经网络的学习框架,使用Caffe可以比较方便地进行CNN模型的训练和测试,精于CV领域。 Caffe作为快速开发和工程应用是非常适合的。caffe官方提供了大量examples,照着examples写,caffe只要求会写prototxt就行,它的训练过程、梯度下降算法等等都实现封装好了,懂了prototxt的语法了,基本就能自己构造神经网络了。

pytorch 自学笔记 01

你。 提交于 2020-01-25 14:22:14
老早都想强化一下pytorch的学习了,但是由于业务忙,事情多,拖到现在,今天正式的开始,本博客仅仅提供代码笔记,内部有注释,方便未来的阅读和学习!(不喜勿喷,为了自己学习!) 学习计划:代码+项目 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/12/28 16:32 # @Author : LZQ # @Software: PyCharm from __future__ import print_function import torch # 构造一个5x3矩阵,不初始化 Mextri53=torch.empty(5,3) print(Mextri53) # 构造一个随机初始化的矩阵 Mextri53_2 = torch.rand(5, 3) print(Mextri53_2) # 构造一个矩阵全为 0,而且数据类型是 long. Mextri53_3 = torch.zeros(5, 3, dtype=torch.long) print(Mextri53_3) # 构造一个张量,直接使用数据: Mextri53_4 = torch.tensor([5.5, 3]) print(Mextri53_4) # 创建一个tensor基于已经存在的tensor Mextri53_5=Mextri53_4.new

tensorflow2.0系列(4): Eager Execution和Auto Graph

六眼飞鱼酱① 提交于 2020-01-25 04:36:03
目录 静态图的弊端 Eager模式 Eager execution的基本特性 对 numpy 的支持 Auto Graph - 动态图 static analysis VS dynamic flow 局部参数的可见域 python collections 数据在tensorflow控制流的使用 tensorflow 控制流中tensor的维度和数据类型 动态计算与静态维度 dtype和shape的一致性 原代码的可达性 Eager训练模式 更多阅读: tf.Variable() 及其assign python collections 静态图的弊端 tensorflow的最初版本是用静态图的方式运行的,在这种方式下,计算图将计算的定义和执行分隔开, 这是一种声明式(declaretive)的编程模型. 静态图的执行模式优点很多,但是在debug时确实非常不方便(类似于对编译好的C语言程序调用,此时是我们无法对其进行内部的调试), 因此有了Eager Execution, 这在TensorFlow v1.5首次引入,在2.0版本中成为了核心API。 引入的Eager Execution模式后, TensorFlow就拥有了类似于Pytorch一样动态图模型能力, 我们可以不必再等到see.run(*)才能看到执行结果, 可以方便在IDE随时调试代码,查看OPs执行结果.