tensorflow中的一些基本函数

Tensorflow一些常用基本概念与函数(1)

摘要:本文主要对tf的一些常用概念与方法进行描述。


1、tensorflow的基本运作

为了快速的熟悉TensorFlow编程,下面从一段简单的代码开始:

import tensorflow as tf
 #定义‘符号’变量,也称为占位符
 a = tf.placeholder("float")
 b = tf.placeholder("float")

 y = tf.mul(a, b) #构造一个op节点

 sess = tf.Session()#建立会话
 #运行会话,输入数据,并计算节点,同时打印结果
 print sess.run(y, feed_dict={a: 3, b: 3})
 # 任务完成, 关闭会话.
 sess.close()
      
        
        
        
        
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

其中tf.mul(a, b)函数便是tf的一个基本的算数运算,接下来介绍跟多的相关函数。

2、tf函数

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

      
        
        
        
        
  • 1
  • 2
  • 3
操作组 操作
Maths Add, Sub, Mul, Div, Exp, Log, Greater, Less, Equal
Array Concat, Slice, Split, Constant, Rank, Shape, Shuffle
Matrix MatMul, MatrixInverse, MatrixDeterminant
Neuronal Network SoftMax, Sigmoid, ReLU, Convolution2D, MaxPool
Checkpointing Save, Restore
Queues and syncronizations Enqueue, Dequeue, MutexAcquire, MutexRelease
Flow control Merge, Switch, Enter, Leave, NextIteration

TensorFlow的算术操作如下:

操作 描述
tf.add(x, y, name=None) 求和
tf.sub(x, y, name=None) 减法
tf.mul(x, y, name=None) 乘法
tf.div(x, y, name=None) 除法
tf.mod(x, y, name=None) 取模
tf.abs(x, name=None) 求绝对值
tf.neg(x, name=None) 取负 (y = -x).
tf.sign(x, name=None) 返回符号 y = sign(x) = -1 if x < 0; 0 if x == 0; 1 if x > 0.
tf.inv(x, name=None) 取反
tf.square(x, name=None) 计算平方 (y = x * x = x^2).
tf.round(x, name=None) 舍入最接近的整数
# ‘a’ is [0.9, 2.5, 2.3, -4.4]
tf.round(a) ==> [ 1.0, 3.0, 2.0, -4.0 ]
tf.sqrt(x, name=None) 开根号 (y = \sqrt{x} = x^{1/2}).
tf.pow(x, y, name=None) 幂次方
# tensor ‘x’ is [[2, 2], [3, 3]]
# tensor ‘y’ is [[8, 16], [2, 3]]
tf.pow(x, y) ==> [[256, 65536], [9, 27]]
tf.exp(x, name=None) 计算e的次方
tf.log(x, name=None) 计算log,一个输入计算e的ln,两输入以第二输入为底
tf.maximum(x, y, name=None) 返回最大值 (x > y ? x : y)
tf.minimum(x, y, name=None) 返回最小值 (x < y ? x : y)
tf.cos(x, name=None) 三角函数cosine
tf.sin(x, name=None) 三角函数sine
tf.tan(x, name=None) 三角函数tan
tf.atan(x, name=None) 三角函数ctan

张量操作Tensor Transformations

  • 数据类型转换Casting
操作 描述
tf.string_to_number
(string_tensor, out_type=None, name=None)
字符串转为数字
tf.to_double(x, name=’ToDouble’) 转为64位浮点类型–float64
tf.to_float(x, name=’ToFloat’) 转为32位浮点类型–float32
tf.to_int32(x, name=’ToInt32’) 转为32位整型–int32
tf.to_int64(x, name=’ToInt64’) 转为64位整型–int64
tf.cast(x, dtype, name=None) 将x或者x.values转换为dtype
# tensor a is [1.8, 2.2], dtype=tf.float
tf.cast(a, tf.int32) ==> [1, 2] # dtype=tf.int32
  • 形状操作Shapes and Shaping
操作 描述
tf.shape(input, name=None) 返回数据的shape
# ‘t’ is [[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]]
shape(t) ==> [2, 2, 3]
tf.size(input, name=None) 返回数据的元素数量
# ‘t’ is [[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]]]
size(t) ==> 12
tf.rank(input, name=None) 返回tensor的rank
注意:此rank不同于矩阵的rank,
tensor的rank表示一个tensor需要的索引数目来唯一表示任何一个元素
也就是通常所说的 “order”, “degree”或”ndims”
#’t’ is [[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]]
# shape of tensor ‘t’ is [2, 2, 3]
rank(t) ==> 3
tf.reshape(tensor, shape, name=None) 改变tensor的形状
# tensor ‘t’ is [1, 2, 3, 4, 5, 6, 7, 8, 9]
# tensor ‘t’ has shape [9]
reshape(t, [3, 3]) ==>
[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
#如果shape有元素[-1],表示在该维度打平至一维
# -1 将自动推导得为 9:
reshape(t, [2, -1]) ==>
[[1, 1, 1, 2, 2, 2, 3, 3, 3],
[4, 4, 4, 5, 5, 5, 6, 6, 6]]
tf.expand_dims(input, dim, name=None) 插入维度1进入一个tensor中
#该操作要求-1-input.dims()
# ‘t’ is a tensor of shape [2]
shape(expand_dims(t, 0)) ==> [1, 2]
shape(expand_dims(t, 1)) ==> [2, 1]
shape(expand_dims(t, -1)) ==> [2, 1] <= dim <= input.dims()
  • 切片与合并(Slicing and Joining)
操作 描述
tf.slice(input_, begin, size, name=None) 对tensor进行切片操作
其中size[i] = input.dim_size(i) - begin[i]
该操作要求 0 <= begin[i] <= begin[i] + size[i] <= Di for i in [0, n]
#’input’ is
#[[[1, 1, 1], [2, 2, 2]],[[3, 3, 3], [4, 4, 4]],[[5, 5, 5], [6, 6, 6]]]
tf.slice(input, [1, 0, 0], [1, 1, 3]) ==> [[[3, 3, 3]]]
tf.slice(input, [1, 0, 0], [1, 2, 3]) ==>
[[[3, 3, 3],
[4, 4, 4]]]
tf.slice(input, [1, 0, 0], [2, 1, 3]) ==>
[[[3, 3, 3]],
[[5, 5, 5]]]
tf.split(split_dim, num_split, value, name=’split’) 沿着某一维度将tensor分离为num_split tensors
# ‘value’ is a tensor with shape [5, 30]
# Split ‘value’ into 3 tensors along dimension 1
split0, split1, split2 = tf.split(1, 3, value)
tf.shape(split0) ==> [5, 10]
tf.concat(concat_dim, values, name=’concat’) 沿着某一维度连结tensor
t1 = [[1, 2, 3], [4, 5, 6]]
t2 = [[7, 8, 9], [10, 11, 12]]
tf.concat(0, [t1, t2]) ==> [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
tf.concat(1, [t1, t2]) ==> [[1, 2, 3, 7, 8, 9], [4, 5, 6, 10, 11, 12]]
如果想沿着tensor一新轴连结打包,那么可以:
tf.concat(axis, [tf.expand_dims(t, axis) for t in tensors])
等同于tf.pack(tensors, axis=axis)
tf.pack(values, axis=0, name=’pack’) 将一系列rank-R的tensor打包为一个rank-(R+1)的tensor
# ‘x’ is [1, 4], ‘y’ is [2, 5], ‘z’ is [3, 6]
pack([x, y, z]) => [[1, 4], [2, 5], [3, 6]]
# 沿着第一维pack
pack([x, y, z], axis=1) => [[1, 2, 3], [4, 5, 6]]
等价于tf.pack([x, y, z]) = np.asarray([x, y, z])
tf.reverse(tensor, dims, name=None) 沿着某维度进行序列反转
其中dim为列表,元素为bool型,size等于rank(tensor)
# tensor ‘t’ is
[[[[ 0, 1, 2, 3],
#[ 4, 5, 6, 7],

#[ 8, 9, 10, 11]],
#[[12, 13, 14, 15],
#[16, 17, 18, 19],
#[20, 21, 22, 23]]]]
# tensor ‘t’ shape is [1, 2, 3, 4]
# ‘dims’ is [False, False, False, True]
reverse(t, dims) ==>
[[[[ 3, 2, 1, 0],
[ 7, 6, 5, 4],
[ 11, 10, 9, 8]],
[[15, 14, 13, 12],
[19, 18, 17, 16],
[23, 22, 21, 20]]]]
tf.transpose(a, perm=None, name=’transpose’) 调换tensor的维度顺序
按照列表perm的维度排列调换tensor顺序,
如为定义,则perm为(n-1…0)
# ‘x’ is [[1 2 3],[4 5 6]]
tf.transpose(x) ==> [[1 4], [2 5],[3 6]]
# Equivalently
tf.transpose(x, perm=[1, 0]) ==> [[1 4],[2 5], [3 6]]
tf.gather(params, indices, validate_indices=None, name=None) 合并索引indices所指示params中的切片
tf.gather
tf.one_hot
(indices, depth, on_value=None, off_value=None,
axis=None, dtype=None, name=None)
indices = [0, 2, -1, 1]
depth = 3
on_value = 5.0
off_value = 0.0
axis = -1
#Then output is [4 x 3]:
output =
[5.0 0.0 0.0] // one_hot(0)
[0.0 0.0 5.0] // one_hot(2)
[0.0 0.0 0.0] // one_hot(-1)
[0.0 5.0 0.0] // one_hot(1)

矩阵相关运算

操作 描述
tf.diag(diagonal, name=None) 返回一个给定对角值的对角tensor
# ‘diagonal’ is [1, 2, 3, 4]
tf.diag(diagonal) ==>
[[1, 0, 0, 0]
[0, 2, 0, 0]
[0, 0, 3, 0]
[0, 0, 0, 4]]
tf.diag_part(input, name=None) 功能与上面相反
tf.trace(x, name=None) 求一个2维tensor足迹,即对角值diagonal之和
tf.transpose(a, perm=None, name=’transpose’) 调换tensor的维度顺序
按照列表perm的维度排列调换tensor顺序,
如为定义,则perm为(n-1…0)
# ‘x’ is [[1 2 3],[4 5 6]]
tf.transpose(x) ==> [[1 4], [2 5],[3 6]]
# Equivalently
tf.transpose(x, perm=[1, 0]) ==> [[1 4],[2 5], [3 6]]
tf.matmul(a, b, transpose_a=False,
transpose_b=False, a_is_sparse=False,
b_is_sparse=False, name=None)
矩阵相乘
tf.matrix_determinant(input, name=None) 返回方阵的行列式
tf.matrix_inverse(input, adjoint=None, name=None) 求方阵的逆矩阵,adjoint为True时,计算输入共轭矩阵的逆矩阵
tf.cholesky(input, name=None) 对输入方阵cholesky分解,
即把一个对称正定的矩阵表示成一个下三角矩阵L和其转置的乘积的分解A=LL^T
tf.matrix_solve(matrix, rhs, adjoint=None, name=None) 求解tf.matrix_solve(matrix, rhs, adjoint=None, name=None)
matrix为方阵shape为[M,M],rhs的shape为[M,K],output为[M,K]

复数操作

操作 描述
tf.complex(real, imag, name=None) 将两实数转换为复数形式
# tensor ‘real’ is [2.25, 3.25]
# tensor imag is [4.75, 5.75]
tf.complex(real, imag) ==> [[2.25 + 4.75j], [3.25 + 5.75j]]
tf.complex_abs(x, name=None) 计算复数的绝对值,即长度。
# tensor ‘x’ is [[-2.25 + 4.75j], [-3.25 + 5.75j]]
tf.complex_abs(x) ==> [5.25594902, 6.60492229]
tf.conj(input, name=None) 计算共轭复数
tf.imag(input, name=None)
tf.real(input, name=None)
提取复数的虚部和实部
tf.fft(input, name=None) 计算一维的离散傅里叶变换,输入数据类型为complex64

归约计算(Reduction)

操作 描述
tf.reduce_sum(input_tensor, reduction_indices=None,
keep_dims=False, name=None)
计算输入tensor元素的和,或者安照reduction_indices指定的轴进行求和
# ‘x’ is [[1, 1, 1]
# [1, 1, 1]]
tf.reduce_sum(x) ==> 6
tf.reduce_sum(x, 0) ==> [2, 2, 2]
tf.reduce_sum(x, 1) ==> [3, 3]
tf.reduce_sum(x, 1, keep_dims=True) ==> [[3], [3]]
tf.reduce_sum(x, [0, 1]) ==> 6
tf.reduce_prod(input_tensor,
reduction_indices=None,
keep_dims=False, name=None)
计算输入tensor元素的乘积,或者安照reduction_indices指定的轴进行求乘积
tf.reduce_min(input_tensor,
reduction_indices=None,
keep_dims=False, name=None)
求tensor中最小值
tf.reduce_max(input_tensor,
reduction_indices=None,
keep_dims=False, name=None)
求tensor中最大值
tf.reduce_mean(input_tensor,
reduction_indices=None,
keep_dims=False, name=None)
求tensor中平均值
tf.reduce_all(input_tensor,
reduction_indices=None,
keep_dims=False, name=None)
对tensor中各个元素求逻辑’与’
# ‘x’ is
# [[True, True]
# [False, False]]
tf.reduce_all(x) ==> False
tf.reduce_all(x, 0) ==> [False, False]
tf.reduce_all(x, 1) ==> [True, False]
tf.reduce_any(input_tensor,
reduction_indices=None,
keep_dims=False, name=None)
对tensor中各个元素求逻辑’或’
tf.accumulate_n(inputs, shape=None,
tensor_dtype=None, name=None)
计算一系列tensor的和
# tensor ‘a’ is [[1, 2], [3, 4]]
# tensor b is [[5, 0], [0, 6]]
tf.accumulate_n([a, b, a]) ==> [[7, 4], [6, 14]]
tf.cumsum(x, axis=0, exclusive=False,
reverse=False, name=None)
求累积和
tf.cumsum([a, b, c]) ==> [a, a + b, a + b + c]
tf.cumsum([a, b, c], exclusive=True) ==> [0, a, a + b]
tf.cumsum([a, b, c], reverse=True) ==> [a + b + c, b + c, c]
tf.cumsum([a, b, c], exclusive=True, reverse=True) ==> [b + c, c, 0]

分割(Segmentation)

操作 描述
tf.segment_sum(data, segment_ids, name=None) 根据segment_ids的分段计算各个片段的和
其中segment_ids为一个size与data第一维相同的tensor
其中id为int型数据,最大id不大于size
c = tf.constant([[1,2,3,4], [-1,-2,-3,-4], [5,6,7,8]])
tf.segment_sum(c, tf.constant([0, 0, 1]))
==>[[0 0 0 0]
[5 6 7 8]]
上面例子分为[0,1]两id,对相同id的data相应数据进行求和,
并放入结果的相应id中,
且segment_ids只升不降
tf.segment_prod(data, segment_ids, name=None) 根据segment_ids的分段计算各个片段的积
tf.segment_min(data, segment_ids, name=None) 根据segment_ids的分段计算各个片段的最小值
tf.segment_max(data, segment_ids, name=None) 根据segment_ids的分段计算各个片段的最大值
tf.segment_mean(data, segment_ids, name=None) 根据segment_ids的分段计算各个片段的平均值
tf.unsorted_segment_sum(data, segment_ids,
num_segments, name=None)
与tf.segment_sum函数类似,
不同在于segment_ids中id顺序可以是无序的
tf.sparse_segment_sum(data, indices,
segment_ids, name=None)
输入进行稀疏分割求和
c = tf.constant([[1,2,3,4], [-1,-2,-3,-4], [5,6,7,8]])
# Select two rows, one segment.
tf.sparse_segment_sum(c, tf.constant([0, 1]), tf.constant([0, 0]))
==> [[0 0 0 0]]
对原data的indices为[0,1]位置的进行分割,
并按照segment_ids的分组进行求和

序列比较与索引提取(Sequence Comparison and Indexing)

操作 描述
tf.argmin(input, dimension, name=None) 返回input最小值的索引index
tf.argmax(input, dimension, name=None) 返回input最大值的索引index
tf.listdiff(x, y, name=None) 返回x,y中不同值的索引
tf.where(input, name=None) 返回bool型tensor中为True的位置
# ‘input’ tensor is
#[[True, False]
#[True, False]]
# ‘input’ 有两个’True’,那么输出两个坐标值.
# ‘input’的rank为2, 所以每个坐标为具有两个维度.
where(input) ==>
[[0, 0],
[1, 0]]
tf.unique(x, name=None) 返回一个元组tuple(y,idx),y为x的列表的唯一化数据列表,
idx为x数据对应y元素的index
# tensor ‘x’ is [1, 1, 2, 4, 4, 4, 7, 8, 8]
y, idx = unique(x)
y ==> [1, 2, 4, 7, 8]
idx ==> [0, 0, 1, 2, 2, 2, 3, 4, 4]
tf.invert_permutation(x, name=None) 置换x数据与索引的关系
# tensor x is [3, 4, 0, 2, 1]
invert_permutation(x) ==> [2, 4, 3, 0, 1]

神经网络(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,否则features
Exponential Linear Units (ELUs)
tf.nn.softplus(features, name=None) 计算softplus:log(exp(features) + 1)
tf.nn.dropout(x, keep_prob,
noise_shape=None, seed=None, name=None)
计算dropout,keep_prob为keep概率
noise_shape为噪声的shape
tf.nn.bias_add(value, bias, data_format=None, name=None) 对value加一偏置量
此函数为tf.add的特殊情况,bias仅为一维,
函数通过广播机制进行与value求和,
数据格式可以与value不同,返回为与value相同格式
tf.sigmoid(x, name=None) y = 1 / (1 + exp(-x))
tf.tanh(x, name=None) 双曲线切线激活函数
  • 卷积函数(Convolution)
操作 描述
tf.nn.conv2d(input, filter, strides, padding,
use_cudnn_on_gpu=None, data_format=None, name=None)
在给定的4D input与 filter下计算2D卷积
输入shape为 [batch, height, width, in_channels]
tf.nn.conv3d(input, filter, strides, padding, name=None) 在给定的5D input与 filter下计算3D卷积
输入shape为[batch, in_depth, in_height, in_width, in_channels]
  • 池化函数(Pooling)
操作 描述
tf.nn.avg_pool(value, ksize, strides, padding,
data_format=’NHWC’, name=None)
平均方式池化
tf.nn.max_pool(value, ksize, strides, padding,
data_format=’NHWC’, name=None)
最大值方法池化
tf.nn.max_pool_with_argmax(input, ksize, strides,
padding, Targmax=None, name=None)
返回一个二维元组(output,argmax),最大值pooling,返回最大值及其相应的索引
tf.nn.avg_pool3d(input, ksize, strides,
padding, name=None)
3D平均值pooling
tf.nn.max_pool3d(input, ksize, strides,
padding, name=None)
3D最大值pooling
  • 数据标准化(Normalization)
操作 描述
tf.nn.l2_normalize(x, dim, epsilon=1e-12, name=None) 对维度dim进行L2范式标准化
output = x / sqrt(max(sum(x**2), epsilon))
tf.nn.sufficient_statistics(x, axes, shift=None,
keep_dims=False, name=None)
计算与均值和方差有关的完全统计量
返回4维元组,*元素个数,*元素总和,*元素的平方和,*shift结果
参见算法介绍
tf.nn.normalize_moments(counts, mean_ss, variance_ss, shift, name=None) 基于完全统计量计算均值和方差
tf.nn.moments(x, axes, shift=None,
name=None, keep_dims=False)
直接计算均值与方差
  • 损失函数(Losses)
操作 描述
tf.nn.l2_loss(t, name=None) output = sum(t ** 2) / 2
  • 分类函数(Classification)
操作 描述
tf.nn.sigmoid_cross_entropy_with_logits
(logits, targets, name=None)*
计算输入logits, targets的交叉熵
tf.nn.softmax(logits, name=None) 计算softmax
softmax[i, j] = exp(logits[i, j]) / sum_j(exp(logits[i, j]))
tf.nn.log_softmax(logits, name=None) logsoftmax[i, j] = logits[i, j] - log(sum(exp(logits[i])))
tf.nn.softmax_cross_entropy_with_logits
(logits, labels, name=None)
计算logits和labels的softmax交叉熵
logits, labels必须为相同的shape与数据类型
tf.nn.sparse_softmax_cross_entropy_with_logits
(logits, labels, name=None)
计算logits和labels的softmax交叉熵
tf.nn.weighted_cross_entropy_with_logits
(logits, targets, pos_weight, name=None)
与sigmoid_cross_entropy_with_logits()相似,
但给正向样本损失加了权重pos_weight
  • 符号嵌入(Embeddings)
操作 描述
tf.nn.embedding_lookup
(params, ids, partition_strategy=’mod’,
name=None, validate_indices=True)
根据索引ids查询embedding列表params中的tensor值
如果len(params) > 1,id将会安照partition_strategy策略进行分割
1、如果partition_strategy为”mod”,
id所分配到的位置为p = id % len(params)
比如有13个ids,分为5个位置,那么分配方案为:
[[0, 5, 10], [1, 6, 11], [2, 7, 12], [3, 8], [4, 9]]
2、如果partition_strategy为”div”,那么分配方案为:
[[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10], [11, 12]]
tf.nn.embedding_lookup_sparse(params,
sp_ids, sp_weights, partition_strategy=’mod’,
name=None, combiner=’mean’)
对给定的ids和权重查询embedding
1、sp_ids为一个N x M的稀疏tensor,
N为batch大小,M为任意,数据类型int64
2、sp_weights的shape与sp_ids的稀疏tensor权重,
浮点类型,若为None,则权重为全’1’
  • 循环神经网络(Recurrent Neural Networks)
操作 描述
tf.nn.rnn(cell, inputs, initial_state=None, dtype=None,
sequence_length=None, scope=None)
基于RNNCell类的实例cell建立循环神经网络
tf.nn.dynamic_rnn(cell, inputs, sequence_length=None,
initial_state=None, dtype=None, parallel_iterations=None,
swap_memory=False, time_major=False, scope=None)
基于RNNCell类的实例cell建立动态循环神经网络
与一般rnn不同的是,该函数会根据输入动态展开
返回(outputs,state)
tf.nn.state_saving_rnn(cell, inputs, state_saver, state_name,
sequence_length=None, scope=None)
可储存调试状态的RNN网络
tf.nn.bidirectional_rnn(cell_fw, cell_bw, inputs,
initial_state_fw=None, initial_state_bw=None, dtype=None,
sequence_length=None, scope=None)
双向RNN, 返回一个3元组tuple
(outputs, output_state_fw, output_state_bw)

tf.nn.rnn简要介绍
cell: 一个RNNCell实例
inputs: 一个shape为[batch_size, input_size]的tensor
initial_state: 为RNN的state设定初值,可选
sequence_length:制定输入的每一个序列的长度,size为[batch_size],值范围为[0, T)的int型数据
其中T为输入数据序列的长度
@
@针对输入batch中序列长度不同,所设置的动态计算机制
@对于在时间t,和batch的b行,有
(output, state)(b, t) = ? (zeros(cell.output_size), states(b, sequence_length(b) - 1)) : cell(input(b, t), state(b, t - 1))


  • 求值网络(Evaluation)
操作 描述
tf.nn.top_k(input, k=1, sorted=True, name=None) 返回前k大的值及其对应的索引
tf.nn.in_top_k(predictions, targets, k, name=None) 返回判断是否targets索引的predictions相应的值
是否在在predictions前k个位置中,
返回数据类型为bool类型,len与predictions同
  • 监督候选采样网络(Candidate Sampling)

对于有巨大量的多分类与多标签模型,如果使用全连接softmax将会占用大量的时间与空间资源,所以采用候选采样方法仅使用一小部分类别与标签作为监督以加速训练。

操作 描述
Sampled Loss Functions
tf.nn.nce_loss(weights, biases, inputs, labels, num_sampled,
num_classes, num_true=1, sampled_values=None,
remove_accidental_hits=False, partition_strategy=’mod’,
name=’nce_loss’)
返回noise-contrastive的训练损失结果
tf.nn.sampled_softmax_loss(weights, biases, inputs, labels,
num_sampled, num_classes, num_true=1, sampled_values=None,
remove_accidental_hits=True, partition_strategy=’mod’,
name=’sampled_softmax_loss’)
返回sampled softmax的训练损失
参考- Jean et al., 2014第3部分
Candidate Samplers
tf.nn.uniform_candidate_sampler(true_classes, num_true,
num_sampled, unique, range_max, seed=None, name=None)
通过均匀分布的采样集合
返回三元tuple
1、sampled_candidates 候选集合。
2、期望的true_classes个数,为浮点值
3、期望的sampled_candidates个数,为浮点值
tf.nn.log_uniform_candidate_sampler(true_classes, num_true,
num_sampled, unique, range_max, seed=None, name=None)
通过log均匀分布的采样集合,返回三元tuple
tf.nn.learned_unigram_candidate_sampler
(true_classes, num_true, num_sampled, unique,
range_max, seed=None, name=None)
根据在训练过程中学习到的分布状况进行采样
返回三元tuple
tf.nn.fixed_unigram_candidate_sampler(true_classes, num_true,
num_sampled, unique, range_max, vocab_file=”,
distortion=1.0, num_reserved_ids=0, num_shards=1,
shard=0, unigrams=(), seed=None, name=None)
基于所提供的基本分布进行采样

保存与恢复变量

操作 描述
类tf.train.Saver(Saving and Restoring Variables)
tf.train.Saver.__init__(var_list=None, reshape=False,
sharded=False, max_to_keep=5,
keep_checkpoint_every_n_hours=10000.0,
name=None, restore_sequentially=False,
saver_def=None, builder=None)
创建一个存储器Saver
var_list定义需要存储和恢复的变量
tf.train.Saver.save(sess, save_path, global_step=None,
latest_filename=None, meta_graph_suffix=’meta’,
write_meta_graph=True)
保存变量
tf.train.Saver.restore(sess, save_path) 恢复变量
tf.train.Saver.last_checkpoints 列出最近未删除的checkpoint 文件名
tf.train.Saver.set_last_checkpoints(last_checkpoints) 设置checkpoint文件名列表
tf.train.Saver.set_last_checkpoints_with_time(last_checkpoints_with_time) 设置checkpoint文件名列表和时间戳

相关链接:

[1] 安装Tensorflow(Linux ubuntu) http://blog.csdn.net/lenbow/article/details/51203526
[2] ubuntu下CUDA编译的GCC降级安装 http://blog.csdn.net/lenbow/article/details/51596706
[3] ubuntu手动安装最新Nvidia显卡驱动 http://blog.csdn.net/lenbow/article/details/51683783
[4] Tensorflow的CUDA升级,以及相关配置 http://blog.csdn.net/lenbow/article/details/52118116
[5] 基于gensim的Doc2Vec简析 http://blog.csdn.net/lenbow/article/details/52120230
[6] TensorFlow的分布式学习框架简介 http://blog.csdn.net/lenbow/article/details/52130565

文章标签: 函数 tensorflow API
个人分类: tensorflow
上一篇TensorFlow的分布式学习框架简介
下一篇Tensorflow一些常用基本概念与函数(2)
$(".MathJax").remove();
MathJax.Hub.Config({ "HTML-CSS": { linebreaks: { automatic: true, width: "94%container" }, imageFont: null }, tex2jax: { preview: "none" }, mml2jax: { preview: 'none' } }); (function(){ var btnReadmore = ("#btn-readmore");
        if(btnReadmore.length>0){
            var winH =
("#btn-readmore");        if(btnReadmore.length>0){            var winH =
(window).height(); var articleBox = ("div.article_content");
            var artH = articleBox.height();
            if(artH > winH*2){
                articleBox.css({
                    'height':winH*2+'px',
                    'overflow':'hidden'
                })
                btnReadmore.click(function(){
                    articleBox.removeAttr("style");
("div.article_content");            var artH = articleBox.height();            if(artH > winH*2){                articleBox.css({                    'height':winH*2+'px',                    'overflow':'hidden'                })                btnReadmore.click(function(){                    articleBox.removeAttr("style");
(this).parent().remove(); }) }else{ btnReadmore.parent().remove(); } } })()
    

2018年人工智能工程师平均年薪是多少?

机器学习|深度学习|图像处理|自然语言处理|无人驾驶,这些技术都会吗?看看真正的人工智能师都会那些关键技术?年薪比你高多少!…………
发表评论
还能输入1000个字符
  • double_BLUE
    double_BLUE 2018-04-22 11:35:13 #8楼
    关于形状的操作 -1的解释部分好像有点错误。。。
    举报 回复
  • qq_35203425
    Mr番茄蛋 2018-04-16 18:24:22 #7楼
    谢谢大佬,我转载了,如有侵权,我会删除
    举报 回复
  • u014264373
    z智慧 2018-04-08 14:17:08 #6楼
    总结的很棒,请允许我转载学习,如有侵权,请联系我删除,谢谢博主
    举报 回复
  • lfy_0_0_0_0
    lfy_0_0_0_0 2018-02-04 12:28:12 #5楼
    总结的好,赞。tf感觉还挺不好学。
    举报 回复
  • Richard_DCT
    Richard_DCT 2018-01-30 10:25:53 #4楼
    赞一个
    举报 回复
  • 上一页
  • 1
  • 2
  • 下一页

TensorFlow 学习(十)—— 工具函数” href=”https://blog.csdn.net/lanchunhui/article/details/63685361” target=”_blank”> TensorFlow 学习(十)—— 工具函数

lanchunhui lanchunhui

03-19 3362

1. 基本 tf.clip_by_value() 截断,常和对数函数结合使用

Tensorflow 中 RNN softmax输出层采样 tf.multinomial(logits, num_samples)” href=”https://blog.csdn.net/jasonzzj/article/details/60330286” target=”_blank”> Tensorflow 中 RNN softmax输出层采样 tf.multinomial(logits, num_samples)

jasonzzj jasonzzj

03-04 4959

Tensorflow 中,想要使用sequence to sequence 模型,在RNN的输出端采样(sampling),可以在softmax层之后,做简单的log p 再用tf.multinomi…

区块链开发学习线图(高薪)区块链开发平均薪资是多少?快速学习区块链开发,掌握以太坊开发和智能合约应用。

tf函数说明 - CSDN博客

5-14

tensorflow的基本运作为了快速的熟悉TensorFlow编程,下面从一段简单的代码开始: import tensorflow as tf #定义‘符号’变量,也称为占位符 a = tf.placeholder(“…

Tensorflow一些常用基本概念函数 - CSDN博客

6-18

1、tensorflow的基本运作 为了快速的熟悉TensorFlow编程,下面从一段简单的代码开始: import tensorflow as tf #定义‘符号’变量,也称为占位符 a = tf….

Tensorflow交叉熵计算错误” href=”https://blog.csdn.net/wo334499/article/details/52067353” target=”_blank”> Tensorflow交叉熵计算错误

wo334499 wo334499

07-29 3915

转载请标明出处:小帆的帆的专栏出现错误的原因-y * np.log(a) - (1-y) * np.log(1 - a)当a = y = 0.0, y * np.log(a) = 0 * -inf =…

一个测试tf卡性能的脚本

a895698737 a895698737

06-24 374

#exec 2>tf.log

#set -x #dd.sh 测试次数 每次写多少块 total_sum=0 average=0 total_times=0 min=888888 max=0 LIMIT…

tensorflow学习笔记(二)…

7-4

例:设 t = [[1,2],[3,4]],则 tf.size(t) 的结果为4。然后我们知道onehot标签的shape为[batch_size,10],采用稀疏编码的方法,在onehot标签中选择能够…

tensorflow——tf.one_hot以及tf.sparse_to_dense函数 - CSDN博客

6-15

1、tf.one_hot函数import numpy as np import tensorflow as tfSIZE=6 CLASS=10 label1=np.random.randint(0,10,size=SIZE) b = tf.one_hot(label1,…

tensorflow笔记:流程,概念和简单代码注释” href=”https://blog.csdn.net/u014595019/article/details/52677412” target=”_blank”> tensorflow笔记:流程,概念和简单代码注释

u014595019 u014595019

09-27 5.4万

tensorflow是google在2015年开源的深度学习框架,可以很方便的检验算法效果。这两天看了看官方的tutorial,极客学院的文档,以及综合tensorflow的源码,把自己的心得整理了一…

TF-IDF及其算法

sangyongjia sangyongjia

09-05 6.5万

概念      TF-IDF(term frequency–inverse document frequency)是一种用于资讯检索与资讯探勘的常用加权技术。TF-IDF是一种统计方法,用以…

TensorFlow学习(六):形状相关操作 - CSDN博客

7-9

更新:2017.12.14 删除很多讲解操作,保留基本的函数 一.基本形状操作 tf.shape(input, name=None, out_type=tf.int32) 作用: 返回一个1维tensor表示input的…

tensorflow—tf.one_hot()函数 - CSDN博客

7-3

tensorflow中tf.one_hot()函数的作用是将一个值化为one-hot编码的向量,指的是在分类问题中,将存在数据类别的那一类用X表示,不存在的用Y表示,这里的X常常是1…

scrolling="no">

tensorflow学习笔记(四):激活函数” href=”https://blog.csdn.net/u012436149/article/details/52874912” target=”_blank”> tensorflow学习笔记(四):激活函数

u012436149 u012436149

10-20 1.9万

tesorflow中的激活函数所有激活函数 输入 和 输出 的维度是一样的tf.nn.relu() tf.nn.sigmoid() tf.nn.tanh() tf.nn.elu() tf.nn.bia…

tf.one_hot()函数简介 - CSDN博客

6-13

tf.one_hot()函数是将input转化为one-hot类型数据输出,相当于将多个数值联合放在一起作为多个相同类型的向量,可用于表示各自的概率分布,通常用于分类任务中作为…

tf.one_hot()使用 - CSDN博客

6-28

tf.one_hot在看conditionGAN的时候注意到label的输入要把它转换成one-hot形式,再与噪声z进行tf.concat输入,之前看的时候忽略了,现在再看才算明白为什么。tf.one…

tf.nn.Relu相关知识

yyylonghui yyylonghui

03-17 1407

原文:http://www.mamicode.com/info-detail-873243.html ReLu=max(0,x) 论文参考:Deep Sparse Rectifier Neural…

TensorFlow 从入门到精通(六):tensorflow.nn 详解” href=”https://blog.csdn.net/kkk584520/article/details/51481416” target=”_blank”> TensorFlow 从入门到精通(六):tensorflow.nn 详解

kkk584520 kkk584520

05-23 5.9万

看过前面的例子,会发现实现深度神经网络需要使用 tensorflow.nn 这个核心模块。我们通过源码来一探究竟。# Copyright 2015 Google Inc. All Rights Res…

tf.one_hot()进行独热编码 - CSDN博客

6-15

tf.one_hot()进行独热编码首先肯定需要解释下什么叫做独热编码(one-hot encoding),独热编码一般是在有监督学习中对数据集进行标注时候使用的,指的是在分类问题中…

TensorFlow tf.one_hot( )剖析 - CSDN博客

6-13

tensorflow——tf.one_hot以及tf.sparse_to_dense函数 1、tf.one_hot函数import numpy as np import tensorflow as tfSIZE=6 CLASS=10 label1=np.random.ra…

TensorFlow学习(七):基本神经网络”组件”’ href=”https://blog.csdn.net/xierhacker/article/details/53174579” target=”_blank”> TensorFlow学习(七):基本神经网络”组件”

xierhacker xierhacker

12-24 1.4万

基本的神经网络的激活函数和分类的函数

tensorflow-激活函数及tf.nn.dropout” href=”https://blog.csdn.net/Eclipsesy/article/details/77603336” target=”_blank”> tensorflow-激活函数及tf.nn.dropout

Eclipsesy Eclipsesy

08-26 4912

激活函数 激活函数(activation function)将神经元计算wTx+bw^Tx+b的结果经过非线性表达映射到下一层。 需要可微,激活函数不会改变输入数据维度。 sigmoid函数:σ(x)…

TensorFlow(七)tf.nn库” href=”https://blog.csdn.net/jiaoyangwm/article/details/79247371” target=”_blank”> TensorFlow(七)tf.nn库

jiaoyangwm jiaoyangwm

02-03 692

tf.nn,tf.layers, tf.contrib模块有很多功能是重复的 下面是对三个模块的简述: tf.nn :提供神经网络相关操作的支持,包括卷积操作(conv)、池化操作(poolin…

TensorFlow基础知识3-操作” href=”https://blog.csdn.net/hongxue8888/article/details/76597322” target=”_blank”> TensorFlow基础知识3-操作

hongxue8888 hongxue8888

08-02 2807

运算操作的相关知识点一个运算操作代表了一种类型的抽象运算,比如矩阵乘法或者向量加法。 一个运算操作可以有自己的属性,但是所有属性都必须被预先设置,或者能够在创建计算图时根据上下文推断出来。 通…

scrolling="no">

tensorflow学习笔记(三十):tf.gradients 与 tf.stop_gradient() 与 高阶导数” href=”https://blog.csdn.net/u012436149/article/details/53905797” target=”_blank”> tensorflow学习笔记(三十):tf.gradients 与 tf.stop_gradient() 与 高阶导数

u012436149 u012436149

12-28 2.3万

gradienttensorflow中有一个计算梯度的函数tf.gradients(ys, xs),要注意的是,xs中的x必须要与ys相关,不相关的话,会报错。 代码中定义了两个变量w1, w2, …

TensorFlow发布「eager」模式,更易操作!” href=”https://blog.csdn.net/Ksf3kg7dU95rn0XL/article/details/78421014” target=”_blank”> TensorFlow发布「eager」模式,更易操作!

Ksf3kg7dU95rn0XL Ksf3kg7dU95rn0XL

11-01 321

图:pixabay 原文来源:Google Brain 作者:Asim Shankar 、 Wolff Dobson 「雷克世界」编译:嗯~阿童木呀 今…

函数讲解” href=”https://blog.csdn.net/wyl1987527/article/details/62458057” target=”_blank”> Tensor数据相关的运算及函数讲解

wyl1987527 wyl1987527

03-16 2万

Tensor数据相关的运算及函数讲解 Tensor tensorflow 中使用它来表示数据。可以看做多维数组或者list。 标量是张量,向量是张量,矩阵是张量,矩阵的矩阵是张量 常用几…

TensorFlow学习(六):形状相关操作” href=”https://blog.csdn.net/xierhacker/article/details/53462072” target=”_blank”> TensorFlow学习(六):形状相关操作

xierhacker xierhacker

12-24 6372

更新:2017.12.14 删除很多讲解操作,保留基本的函数 一.基本形状操作 tf.shape(input, name=None, out_type=tf.int32) 作…

tensorflow学习笔记(二十六):构建TF代码” href=”https://blog.csdn.net/u012436149/article/details/53843158” target=”_blank”> tensorflow学习笔记(二十六):构建TF代码

u012436149 u012436149

12-23 1.4万

如何构建TF代码batch_size: batch的大小 mini_batch: 将训练样本以batch_size分组 epoch_size: 样本分为几个min_batch num_epoch…

width="800" height="100" align="center,center" id="iframeu3394176_0" src="https://pos.baidu.com/tcmm?conwid=800&conhei=100&rdid=3394176&dc=3&di=u3394176&dri=0&dis=0&dai=4&ps=17304x62&enu=encoding&dcb=___adblockplus&dtm=HTML_POST&dvi=0.0&dci=-1&dpt=none&tsr=0&tpr=1533272800380&ti=Tensorflow%E4%B8%80%E4%BA%9B%E5%B8%B8%E7%94%A8%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5%E4%B8%8E%E5%87%BD%E6%95%B0%EF%BC%881%EF%BC%89%20-%20CSDN%E5%8D%9A%E5%AE%A2&ari=2&dbv=2&drs=1&pcs=1184x507&pss=1421x17377&cfv=0&cpl=1&chi=1&cce=true&cec=utf-8&tlm=1533272800&prot=2&rw=523<u=https%3A%2F%2Fblog.csdn.net%2Flenbow%2Farticle%2Fdetails%2F52152766<r=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3Dvb-l8l4oqyo0NPR20iRVl_oqc1fr9Su3EQKyL2MYPKtvhv1YUTeelZ5oXDfiVGOatLIxaQ4flALhWGzfXmnJGq%26wd%3D%26eqid%3Dfc603ca40000272b000000025b63d8ea&ecd=1&uc=1200x637&pis=-1x-1&sr=1200x675&tcn=1533272800&qn=b8e417332d1ed478&tt=1533272799959.460.462.465" scrolling="no" vspace="0" hspace="0">

tensorflow–tf.one_hot()函数示例” href=”https://blog.csdn.net/wenqiwenqi123/article/details/78055740” target=”_blank”> tensorflow–tf.one_hot()函数示例

wenqiwenqi123 wenqiwenqi123

09-21 9865

tensorflow中tf.one_hot()函数的作用是将一个值化为一个概率分布的向量,一般用于分类问题。 具体用法以及作用见以下代码: import numpy as np import tens…

Tensorflow源码分析–tf.abs()” href=”https://blog.csdn.net/jiangzhenkang/article/details/80708076” target=”_blank”> Tensorflow源码分析–tf.abs()

jiangzhenkang jiangzhenkang

06-15 142

Tensorflow源码分析–abs 标签(空格分隔): Tensorflow tf.abs() import tensorflow as tf x = tf.constant([[-2…

tf.sign和tf.reduce_sum

u014221266 u014221266

04-30 8490

tensorflow中两个经常用到的操作,理解的不是很透彻,故在此做标记: 关于reduce_sum的维度问题也容易让人迷惑,特找来好用的图示,一看即懂: 为了加深影响,给出简单code …

Tensorflow | 基本函数介绍” href=”https://blog.csdn.net/xxzhangx/article/details/54606040” target=”_blank”> Tensorflow | 基本函数介绍

xxzhangx xxzhangx

01-18 6749

这次来总结下这几天学习tensorflow的心得,包含了一些基本的函数,例如,加减乘除等,下面来一一介绍,并给出具体的例子。 两个小的tips 我的版本:anaconda 4.2 tensorflo…

学习笔记TF020:序列标注、手写小写字母OCR数据集、双向RNN

weixin_38776853 weixin_38776853

06-05 928

序列标注(sequence labelling),输入序列每一帧预测一个类别。OCR(Optical Character Recognition 光学字符识别)。MIT口语系统研究组Rob Kasse…

scrolling="no">

TensorFlow 中文文档” href=”https://blog.csdn.net/grgary/article/details/50477754” target=”_blank”> TensorFlow 中文文档

grgary grgary

01-07 1.2万

介绍本章的目的是让你了解和运行 TensorFlow在开始之前, 先看一段使用 Python API 撰写的 TensorFlow 示例代码, 对将要学习的内容有初步的印象.这段很短的 Python …

Tensorflow】tf.cast 类型转换 函数” href=”https://blog.csdn.net/zj360202/article/details/70260265” target=”_blank”> 【Tensorflow】tf.cast 类型转换 函数

zj360202 zj360202

04-20 2.8万

tf.cast(x, dtype, name=None) 此函数是类型转换函数 参数 x:输入dtype:转换目标类型name:名称 返回:Tensor 例:

# tensor `a` i…

Tensorflow入门—-占位符、常量和Session” href=”https://blog.csdn.net/fei13971414170/article/details/73309106” target=”_blank”> Tensorflow入门—-占位符、常量和Session

fei13971414170 fei13971414170

06-15 5679

安装好TensorFlow之后,开一个python环境,就可以开始运行和使用TensorFlow了。先给一个实例,#先导入TensorFlow import tensorflow as tf# Cre…

tf.cocat Expected int32, got list containing Tensors of type ‘_Message’ instead.

u011961856 u011961856

03-04 1494

tensorflow 函数tf.cocat([fw,bw],2)出错: Expected int32, got list containing Tensors of type ‘_Message’ …

Tensorflow一些常用基本概念函数” href=”https://blog.csdn.net/zhongshaoyy/article/details/59179016” target=”_blank”> Tensorflow一些常用基本概念函数

zhongshaoyy zhongshaoyy

03-01 3566

原文地址:http://blog.csdn.net/lenbow/article/details/52152766 1、tensorflow的基本运作 为了快速的熟悉TensorF…

width="800" height="100" align="center,center" id="iframeu3394176_1" src="https://pos.baidu.com/tcmm?conwid=800&conhei=100&rdid=3394176&dc=3&di=u3394176&dri=1&dis=0&dai=8&ps=19966x61&enu=encoding&dcb=___adblockplus&dtm=HTML_POST&dvi=0.0&dci=-1&dpt=none&tsr=0&tpr=1533272800380&ti=Tensorflow%E4%B8%80%E4%BA%9B%E5%B8%B8%E7%94%A8%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5%E4%B8%8E%E5%87%BD%E6%95%B0%EF%BC%881%EF%BC%89%20-%20CSDN%E5%8D%9A%E5%AE%A2&ari=2&dbv=2&drs=4&pcs=1184x507&pss=1219x20039&cfv=0&cpl=1&chi=1&cce=true&cec=utf-8&tlm=1533272827&prot=2&rw=523<u=https%3A%2F%2Fblog.csdn.net%2Flenbow%2Farticle%2Fdetails%2F52152766<r=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3Dvb-l8l4oqyo0NPR20iRVl_oqc1fr9Su3EQKyL2MYPKtvhv1YUTeelZ5oXDfiVGOatLIxaQ4flALhWGzfXmnJGq%26wd%3D%26eqid%3Dfc603ca40000272b000000025b63d8ea&ecd=1&uc=1200x637&pis=-1x-1&sr=1200x675&tcn=1533272827&qn=5c7c789a8c18d415&tt=1533272799959.27102.27102.27102" scrolling="no" vspace="0" hspace="0">

TensorFlow 1.0 重大功能及改善” href=”https://blog.csdn.net/u013451663/article/details/55657586” target=”_blank”> TensorFlow 1.0 重大功能及改善

u013451663 u013451663

02-18 3124

TensorFlow 1.0 重大功能及改善 XLA(实验版):初始版本的XLA,针对TensorFlow图(graph)的专用编译器,面向CPU和GPU。 TensorFlow Debu…

tensorflow reverse_sequence实例” href=”https://blog.csdn.net/guotong1988/article/details/52767418” target=”_blank”> tensorflow reverse_sequence实例

guotong1988 guotong1988

10-09 2252

import tensorflow as tfa = tf.constant([[1,2,3], [1,2,3], [1,2,3]]) l = tf.constant([2,2,2],tf.int64…

没有更多推荐了,返回首页

("a.flexible-btn").click(function(){ ("a.flexible-btn").click(function(){ (this).parents('div.aside-box').removeClass('flexible-box'); $(this).remove(); })

你可能感兴趣的:(tensorflow,函数,tensorflow,API,tensorflow)