Tensorflow常用函数说明

1.矩阵操作

1.1矩阵生成

这部分主要将如何生成矩阵,包括全0矩阵,全1矩阵,随机数矩阵,常数矩阵等

sess=tf.InteractiveSession()
#x=tf.ones([2,3],tf.int32)
x=tf.zeros([2,3],tf.int32)
print (sess.run(x))

新建一个与给定的tensor类型大小一致的tensor,使其所有元素为0和1

sess=tf.InteractiveSession()
tensor=[[1,2,3],[4,5,6]]
#x=tf.ones_like(tensor)
x=tf.zeros_like(tensor)
print (sess.run(x))

创建一个形状大小为shape的tensor,初始值为value

sess=tf.InteractiveSession()
x=tf.fill([2,3],2)
print (sess.run(x))

创建一个常量tensor,按照给出value来赋值,可以用shape来指定其形状。value可以是一个数,也可以是一个list。 
如果是一个数,那么这个常量中所有值的按该数来赋值。 
如果是list,那么len(value)一定要小于等于shape展开后的长度。赋值时,先将value中的值逐个存入。不够的部分,则全部存入value的最后一个值。

sess=tf.InteractiveSession()
#x=tf.constant(2,shape=[2,3])
x=tf.constant([2,3],shape=[2,3])
print (sess.run(x))

random_normal:正态分布随机数,均值是mean,标准差是stddev

truncated_normal:截断正态分布随机数,均值是mean,标准差是stddev,只保留[mean-2*stddev,mean+2*stddev]范围内的随机数

random_uniform:均匀分布随机数,范围为[minval,maxval]

sess=tf.InteractiveSession()
x=tf.random_normal(shape=[1,5],mean=0.0,stddev=1.0,dtype=tf.float32)
print (sess.run(x))
tf.get_variable(name, shape=None, dtype=dtypes.float32, initializer=None,
                 regularizer=None, trainable=True, collections=None,
                 caching_device=None, partitioner=None, validate_shape=True,
                 custom_getter=None):

如果在该命名域中之前已经有名字=name的变量,则调用那个变量;如果没有,则根据输入的参数重新创建一个名字为name的变量。

initializer为初始化工具,有tf.zero_initializer,tf.ones_initializer,tf.constant_initializer,tf.random_uniform_initializer,tf.random_normal_initializer,tf.truncated_normal_initializer

1.2 矩阵变换

tf.shape(Tensor)

返回张量的形状。但是注意,tf.shape函数本身也是返回一个张量。而在tf中,张量是需要用sess.run(Tensor)来得到具体的值的。

sess=tf.InteractiveSession()
x=[[1,2,3],[4,5,6]]
shape=tf.shape(x)
print (shape)
print (sess.run(shape))

Tensor("Shape:0", shape=(2,), dtype=int32)
[2 3]

tf.expand_dims(Tensor,dim)

为张量增加一个维度

sess=tf.InteractiveSession()
x=[1,2,3]
y=tf.expand_dims(x,1)
print (sess.run(y))

[[1]
 [2]
 [3]]

#y=tf.expand_dims(x,0)
[[1,2,3]]

tf.pack()

将一个R维张量列表沿着axis轴组合成一个R+1维的张量。

x=[1,4]
y=[2,5]
z=[3,6]
t=tf.stack([x,y,z],1)
print (sess.run(t))

[[1 2 3]
 [4 5 6]]

tf.concat(concat_dim,values)将张量沿着指定的维数拼接起来。

tf.sparse_to_dense()将稀疏矩阵转化为密集矩阵

def sparse_to_dense(sparse_indices,
                    output_shape,
                    sparse_values,
                    default_value=0,
                    validate_indices=True,
                    name=None):

sparse_indices: 元素的坐标[[0,0],[1,2]] 表示(0,0),和(1,2)处有值 
output_shape: 得到的密集矩阵的shape 
sparse_values: sparse_indices坐标表示的点的值,可以是0D或者1D张量。若0D,则所有稀疏值都一样。若是1D,则len(sparse_values)应该等于len(sparse_indices) 
default_values: 缺省点的默认值

tf.random_shuffle(value)

沿着value的第一维进行随机重新排列。

tf.argmax|tf.argmin(input=tensor,dimension=axis)

找到给定的张量tensor在指定轴axis上的最大值/最小值的位置。

tf.equal(x,y)

判断两个tensor是否每个元素都相等。

tf.cast(x,dtype)

将x的数据格式转化为dtype。

tf.matmul(a,b,transpose_a=False,transpose_b=False,a_is_parse=False,b_is_sparse=False)

如果对应的transpose项为True,例如transpose_a=True,那么a在参与运算之前就会先转置一下。 
而如果a_is_sparse=True,那么a会被当做稀疏矩阵来参与运算。

tf.reshape(tensor,shape)

如果shape=[-1],表示将tensor展开成一个list。

2. 神经网络相关操作

tf.nn.embedding_lookup(params,ids)

简单来说,就是讲一个数字序列ids转化成embedding序列表示。

tf.trainable_variables()

返回所有可以训练的变量。

tf.gradients(ys,xs)

ys和xs都可以是一个tensor或者tensor列表。而计算完成以后,该函数会返回一个长为len(xs)的tensor列表,列表中的每个tensor是ys中每个值对xs[i]求导之和。

tf.clip_by_global_norm(t_list,clip_norm)

修正梯度值,用于控制梯度爆炸的问题。梯度爆炸和梯度弥散的原因一样,都是因为链式法则求导的关系,导致梯度的指数级衰减。为了避免梯度爆炸,需要对梯度进行修剪。

t_list为待修剪的张量,clip_norm表示修剪比例,函数返回两个参数:list_clipped,修剪后的张量,以及global_norm,一个中间计算量。

list_clipped[i]=t_list[i] * clip_norm / max(global_norm, clip_norm),其中 
global_norm = sqrt(sum([l2norm(t)**2 for t in t_list]))

tf.nn.dropout(x,keep_prob)

按照概率将x中的一些元素置0,并将其他的值放大。x是一个张量,而keep_prob是一个(0,1]之间的值。x中的各个元素清零的概率互相独立,为1-keep_prob,而没有清零的元素,则会统一乘以1/keep_prob, 目的是为了保持x的整体期望值不变。

3.普通操作

tf.linspace|tf.range

tf.linspace(start,stop,num)

在[start,stop]的范围内产生num个数的等差数列,start和stop要用浮点数进行表示。

tf.range(start,limit=None,delta=1) 在[start,limit)范围内以步进值delta产生等差数列。

tf.assign(ref,value)

用来更新模型中变量的值,ref是待赋值的变量,value是更新的值。

4.规范化

tf.variable_scope

为变量添加命名域

with tf.variable_scope("foo"):

tf.get_variable_scope()返回当前变量的命名域。

时间: 2024-08-02 17:21:59

Tensorflow常用函数说明的相关文章

TensorFlow 常用函数汇总

本文介绍了tensorflow的常用函数,源自网上整理. TensorFlow 将图形定义转换成分布式执行的操作, 以充分利用可用的计算资源(如 CPU 或 GPU.一般你不需要显式指定使用 CPU 还是 GPU, TensorFlow 能自动检测.如果检测到 GPU, TensorFlow 会尽可能地利用找到的第一个 GPU 来执行操作.并行计算能让代价大的算法计算加速执行,TensorFlow也在实现上对复杂操作进行了有效的改进.大部分核相关的操作都是设备相关的实现,比如GPU. 下面是一些

TensorFlow 常用函数与方法

摘要:本文主要对tf的一些常用概念与方法进行描述. tf函数 TensorFlow 将图形定义转换成分布式执行的操作, 以充分利用可用的计算资源(如 CPU 或 GPU.一般你不需要显式指定使用 CPU 还是 GPU, TensorFlow 能自动检测.如果检测到 GPU, TensorFlow 会尽可能地利用找到的第一个 GPU 来执行操作. 并行计算能让代价大的算法计算加速执行,TensorFlow也在实现上对复杂操作进行了有效的改进.大部分核相关的操作都是设备相关的实现,比如GPU.下面是

tensorflow常用函数解析

一.tf.transpose函数的用法 tf.transpose(input, [dimension_1, dimenaion_2,..,dimension_n]):这个函数主要适用于交换输入张量的不同维度用的,如果输入张量是二维,就相当是转置.dimension_n是整数,如果张量是三维,就是用0,1,2来表示.这个列表里的每个数对应相应的维度.如果是[2,1,0],就把输入张量的第三维度和第一维度交换. import numpy as np import tensorflow as tf A

『TensorFlow』常用函数实践笔记

查询列表: 『TensorFlow』函数查询列表_数值计算 『TensorFlow』函数查询列表_张量属性调整 『TensorFlow』函数查询列表_神经网络相关 经验之谈: 节点张量铺设好了之后,只要不加sess.run(),可以运行脚本检查张量节点是否匹配,无需传入实际数据流. 'conv1'指节点,'conv1:0'指节点输出的第一个张量. sess上下文环境中的函数调用即使不传入sess句柄,函数体内也存在于默认的sess环境中,可以直接sess.run(). image_holder

『TensorFlow』函数查询列表_神经网络相关

神经网络(Neural Network) 激活函数(Activation Functions) 操作 描述 tf.nn.relu(features, name=None) 整流函数:max(features, 0) tf.nn.relu6(features, name=None) 以6为阈值的整流函数:min(max(features, 0), 6) tf.nn.elu(features, name=None) elu函数,exp(features) - 1 if < 0,否则featuresE

Data Frame的常用函数

1.DataFrame的常用函数: (1)np.abs(frame) 绝对值, (2)apply function, lambda f= lambda x: x.max()-x.min(),frame.apply(f); frame.apply(f,axis = 1) f(x), def f(x): return Series([x.min(),x.max()], index=['min','max']),frame.apply(f)(3) applymap format f= lambda x

Oracle SQL语言之常用函数_超越OCP精通Oracle视频教程培训30

Oracle SQL语言之常用函数_超越OCP精通Oracle视频教程培训30 本课程介绍: Oracle视频教程,风哥本套oracle教程培训是<<Oracle数据库SQL语言实战培训教程>>的第5/5套:Oracle SQL语言之常用函数.主要学习Oracle数据库SQL聚合函数,分组函数,字符函数,转换函数,日期字符数字转换,日期函数,集合函数,分析函数等. Oracle SQL语言之常用函数,课程内容详细如下: 聚合函数-数据统计 分组函数-使用group by与havin

MySQL学习笔记(三)——计算字段及常用函数

拼接字段-Concat()函数        将值连接在一起构成单个值.注意:大多数DBMS使用+或者||来实现拼接,mysql则使用Concat()函数来实现. 去空格函数-Trim函数        Trim去掉串左右两边的空格,RTrim去掉串右边的空格,LTrim去掉左边的空格. 使用别名-AS        我们希望查出的新列能有个简介明了的列名,可以用AS来赋予别名. 执行算术运算(+,-,*,/) 大多数sql实现支持以下类型的函数: 1.用于处理文本串(如删除或填充值,转换值为大

162个php常用函数基础用法(个人整理)

PHP常用函数总结 数学函数 1.abs(): 求绝对值 $abs = abs(-4.2); //4.2 数字绝对值数字 2.ceil(): 进一法取整 echo ceil(9.999); // 10 浮点数进一取整 3.floor(): 舍去法取整 echo floor(9.999); // 9 浮点数直接舍去小数部分 4.fmod(): 浮点数取余 ? 1 2 3 4 $x = 5.7; $y = 1.3; // 两个浮点数,x>y 浮点余数 $r = fmod($x, $y); // $r