tensor

tensorflow constant placeholder feed_dictVariable

亡梦爱人 提交于 2020-03-06 10:23:50
tf.constant tf.constant() 返回的 tensor 是一个常量,因为这个 tensor 的值不会变 tf.placeholder 和 feed_dict tf.placeholder 用于将普通类型,转化为 tensor 类型 feed_dict 表示投喂字典,格式为 {tensor_type: value} ,其中 tensor_type 表示 tensor 类型, value 表示对应的值,用于具体的计算 softmax_data = [ 0.7 , 0.2 , 0.1 ] one_hot_data = [ 1.0 , 0.0 , 0.0 ] # 将 float 类型转化为 tensor 类型 softmax = tf . placeholder ( tf . float32 ) one_hot = tf . placeholder ( tf . float32 ) # TODO: Print cross entropy from session # 传给 tf.multiply 的参数是两个 tensor 类型,而不是具体的值, # 具体的值在 sess.run() 时,在 feed_dict 中提供 cross_entropy = - tf . reduce_sum ( tf . multiply ( one_hot , tf . log (

Pytorch expand_as()函数

一曲冷凌霜 提交于 2020-03-06 05:02:53
Pytorch expand_as函数;expand_as函数 expand() expand_as() expand() expand ( * sizes ) 将张量扩展为和参数sizes一样的大小。 【参数】: sizes(torch.Size or int):需要扩展的大小。必须是由 ints 组成的 tuple 。 >> > x = torch . Tensor ( [ [ 1 ] , [ 2 ] , [ 3 ] ] ) >> > y = x . expand ( 3 , 3 ) >> > print ( x ) tensor ( [ [ 1 . ] , [ 2 . ] , [ 3 . ] ] ) >> > print ( y ) tensor ( [ [ 1 . , 1 . , 1 . ] , [ 2 . , 2 . , 2 . ] , [ 3 . , 3 . , 3 . ] ] ) >> > print ( x . shape ) torch . Size ( [ 3 , 1 ] ) >> > print ( y . shape ) torch . Size ( [ 3 , 3 ] ) expand_as() expand_as ( tensor ) 将张量扩展为参数tensor的大小。 >> > x = torch . randn ( 1 , 3 , 1 , 1 )

torch.nn.functional.unfold()

独自空忆成欢 提交于 2020-03-05 15:38:50
函数定义: def unfold(input, kernel_size, dilation=1, padding=0, stride=1): """ input: tensor数据,四维, Batchsize, channel, height, width kernel_size: 核大小,决定输出tensor的数目。稍微详细讲 dilation: 输出形式是否有间隔,稍后详细讲。 padding:一般是没有用的必要 stride: 核的滑动步长。稍后详细讲 """ 假设我们现在有一个张量特征图,其size为[ 1, C, H, W] 将这个特征图连续的在分辨率维度(H和W)维度取出特征。就像下面这样: 就是想把输入tensor数据,按照一定的区域(由 核的长宽 ),不断沿着通道维度取出来,由 步长 指定核滑动的步长,由 dilation 指定核内区域哪些被 跳过 。 这里要说明一下,unfold函数的 输入 数据是 四维 ,但 输出 是 三维 的。假设输入数据是 [B, C, H, W], 那么输出数据是 [B, C* kH * kW, L] , 其中kH是核的高,kW是核宽。 L 则是这个高kH宽kW的核能在H*W区域按照指定stride 滑动的次数 。 上面公式中第一项是指核高kH的情况下,能在高H的特征图上滑动的次数,后一项则是在宽这个维度上。当然默认stride=1

tensorflow: how to assign an updated numpy

泄露秘密 提交于 2020-03-04 04:21:26
问题 I'm new in tensorflow and I'm trying to understand its behaviors; I'm trying to define all the operations outside the session scope so to optimize the computation time. In the following code: import tensorflow as tf import numpy as np Z_tensor = tf.Variable(np.float32( np.zeros((1, 10)) ), name="Z_tensor") Z_np = np.zeros((1,10)) update_Z = tf.assign(Z_tensor, Z_np) Z_np[0][2:4] = 4 with tf.Session() as sess: sess.run(Z_tensor.initializer) print(Z_tensor.eval()) print(update_Z.eval(session

axis理解

☆樱花仙子☆ 提交于 2020-03-04 00:49:49
目录 1. Axis的数量即为数据的维度 2. 从内到外"扒开"张量 3. 列几个对axis进行操作的tensorflow op,加深印象(argmax/gather) 1. Axis的数量即为数据的维度 axis(轴,维度) 在数学和物理中,维度通常被解释为空间中描述一个位置所需的最少坐标个数(基底的位数)。 然而在 numpy 中 axis 的个数就是数据的维度,体现在具体数据上就是 括号的层数 。 [[1, 2, 3], [2, 3, 4], [5, 4, 3], [8, 7, 2]] —— axis=2,二维Tensor 可以认为有多少个"["维度就为几,“轴”是从外向里的,axis从外层到内层依次增大(0,1…) 2. 从内到外"扒开"张量 input = [ [[1,2,3,4], [2,3,4,1]], [[1,2,9,4], [2,0,6,1]], [[1,0,3,4], [2,3,5,1]], ] # 3x2x4 axis = 0 : 沿着axis=0,划分出单个元素,就是最外层中括号括住的元素 元素个数:3,每个元素的shape=2x4,如下: [[1,2,3,4], [2,3,4,1]] / [[1,2,9,4], [2,0,6,1]] / [[1,0,3,4], [2,3,5,1]] axis = 1: 单个元素为中间层的中括号包围的元素

Tensorflow的基本使用

浪子不回头ぞ 提交于 2020-03-03 23:22:09
基本使用 使用 TensorFlow, 你必须明白 TensorFlow: • 使用图 (graph) 来表示计算任务. • 在被称之为 会话(Session)的上下文 (context) 中执行图. • 使用 tensor 表示数据. • 通过变量(Variable)维护状态. • 使用 feed 和 fetch 可以为任意的操作(arbitrary operation) 赋值或者从其中获取数据. 综述 TensorFlow 是一个编程系统, 使用图来表示计算任务. 图中的节点被称之为 op (operation 的缩写). 一个 op 获得 0 个或多个Tensor , 执行计算, 产生 0 个或多个Tensor . 每个 Tensor 是一个类型化的多维数组. 例 如, 你可以将一小组图像集表示为一个四维浮点数数组, 这四个维度分别是[batch,height,width,channels] . 一个 TensorFlow 图描述了计算的过程. 为了进行计算, 图必须在会话 里被启动. 将图的 op 分发到 诸如 CPU 或 GPU 之类的 设备上, 同时提供执行 op 的方法. 这些方法执行后, 将产生的 tensor 返回. 在 P ython 语言中, 返回的 tensor 是 numpy ndarray对象; 在 C 和 C++ 语言中, 返回的 tensor

Deformable convolutional networks(可变形卷积)使用keras/tensorflow主要代码及注释

旧城冷巷雨未停 提交于 2020-03-02 04:09:22
以下对Deformable convolutional networks(可变形卷积)keras/tensorflow主要的代码进行理解和注释 代码原地址: https://github.com/kastnerkyle/deform-conv layers.py from __future__ import absolute_import, division import tensorflow as tf from keras.layers import Conv2D from keras.initializers import RandomNormal from deform_conv.deform_conv import tf_batch_map_offsets class ConvOffset2D(Conv2D): #继承2D卷积 """ConvOffset2D""" def __init__(self, filters, init_normal_stddev=0.01, **kwargs): """Init""" self.filters = filters super(ConvOffset2D, self).__init__( self.filters * 2, (3, 3), padding='same', use_bias=False, #由于要计算x,y坐标的偏移量

Pytorch切换GPU或CPU

依然范特西╮ 提交于 2020-03-01 08:34:55
Pytorch切换GPU或CPU Pytorch版本:>=0.40 Pytorch默认是在cpu上训练,我们可以通过 to(device) 方法切换到GPU to(device)参数 to(device) 方法接受的参数为 torch.device 类型。可以写为 device = torch . device ( "cuda:0" ) # 使用gpu0 我习惯这种写法,如果你系统中没有可用的cuda,直接切换到cpu来运行。 device = torch . device ( "cuda:0" if torch . cuda . is_available ( ) else "cpu" ) 数据或模型调用to(device)方法 在训练前切换GPU,数据和模型都是要放到同一块GPU上的,都可以通过调用to(device)来切换显卡。 1.数据对应:torch.Tensor类型 tensor = torch . randn ( 2 , 2 ) device = torch . device ( "cuda:0" ) # 简写 tensor = tensor . to ( device ) # 需要赋值 # Outputs: # tensor([[-0.2136, 1.3254], # [ 1.9691, -0.8401]], device='cuda:0') 2.模型对应:torch

Pytorch笔记 (3) 科学计算2

僤鯓⒐⒋嵵緔 提交于 2020-03-01 05:50:44
一、组织张量的元素 (1)重排张量元素 本节介绍在不改变 张量元素个数 和 各元素的值的情况下改变张量的大小 torch.Tensor类的成员方法 reshape() 参数是多个int类型的值。 如果想要把一个张量的大小改成 s[0],s[1],s[2],s[3]....那就让s[0],s[1],s[2],s[3]....作为reshape() 方法的n个参数 使用 reshape() 在不改变元素个数和各元素的值的情况下改变张量大小 tc = torch.arange(12) #张量大小 (12,) print('tc={}'.format(tc)) t322 = tc.reshape(3,2,2) #张量大小 (3,2,2) print('t322={}'.format(t322)) t43 = t322.reshape(4,3) #张量大小(4,3) print('t43={}'.format(t43)) tc=tensor([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) t322=tensor([[[ 0, 1], [ 2, 3]], [[ 4, 5], [ 6, 7]], [[ 8, 9], [10, 11]]]) t43=tensor([[ 0, 1, 2], [ 3, 4, 5], [ 6, 7, 8], [ 9, 10, 11]])