本文记录Tensorflow中常用函数功能,方便大家使用时查询!

  1. tf.nn.dynamic_rnn

  2. tf.nn.bidirectional_dynamic_rnn

  3. tf.nn.softmax_cross_entropy_with_logits

  4. tf.Variable

  5. tf.get_variable

  6. tf.variable_scope

  7. tf.name_scope

  8. tf.reduce_max

  9. tf.reduce_mean

  10. tf.sequence_mask

  11. tf.reverse_sequence

  12. tf.multipy

  13. tf.matmul

  14. tf.tensordot

  15. tf.layers.conv1d

  16. tf.layers.dense

  17. tf.where

  18. tf.argmax

  19. tf.equal

  20. tf.cast

  21. tf.tile

  22. tf.concat

  23. tf.transpose

  24. tf.ones_like、tf.zeros_like

  25. tf.square

  26. tf.squeeze

  27. tf.truncated_normal、tf.random_normal

  28. tf.random_uniform

  29. tf.expend_dims

  30. tf.nn.relu

  31. tf.nn.relu6

  32. tf.nn.softplus

  33. tf.nn.dropout

  34. tf.nn.bias_add

  35. tf.sigmoid

  36. tf.tanh

1、tf.nn.dynamic_rnn

71cda88584ffca7385b267a44af3bf37.png

tf.nn.dynamic_rnn是动态rnn函数,这里的cell可以时

(1) tf.contrib.rnn.BasicRNNCell

(2) tf.contrib.rnn.MultiRNNCell

(3) tf.contrib.rnn.BasicLSTMCell

(4) tf.contrib.rnn.GRUCell

再关注的是此函数的输出output, state = tf.nn.dynamic,其中output是函数包含了每层的结果输出,如果cell是单向的,则output只包含一个,output的维度是[batch_size, steps, Units],可以通过tf.transpose(output, [1, 0, 2]),得到[steps, batch_size, Units]的output,这样可以取最后一个step的output,state应是由(c, h)组成,因为是最后一层的,因此维度为(batch_size, Units),如果想要得到最后一层输出可以用state.h,当然也可以用output[:,-1,:]取最后一个输出

2、tf.nn.bidirectional_dynamic_rnn

3b9ca9c557b10ddd07e992d8fb318e0b.png

tf.nn.bidirectional_dynamic_rnn是双向的,则(fw_output,bw_output) = output

(fw_final_state,bw_final_state) = state,则state是表示隐层最后一层的输出

对于双向rnn,输出结果output包括了前向输出fw_output和反向输出bw_output

可通过tf.concat(output, 2)将两层rnn结合起来

3、tf.nn.softmax_cross_entropy_with_logits

db75333e1e1fdf8cd1f3feecab05b98f.png

在介绍交叉熵损失函数前,先简单认识一下熵和相对熵的概

(1) 熵:衡量单个随机变量的不确定性

fb8a91121075a5d23c19c758b5a6e78c.png

(2) 相对熵:衡量两个随机变量之间的相似度

ea02b029bd938b08ce4cf4caaf187ade.png

(3) 交叉熵Cross Entropy:衡量两个随机变量之间的相似度,类似于相对熵,相对熵做变形去掉熵定义的定量部分,得到的便是交叉熵

dddf841a146172f133193a841d0b428e.png

814751342057f2bb954fcd3144da2f06.png

(4) tf.losses.softmax_cross_entropy

(5) tf.nn.softmax_cross_entropy_with_logits

(6) tf.losses.sparse_softmax_cross_entropy

(7) tf.nn.sparse_softmax_cross_entropy_with_logits

其中(4)/(5)函数等价,(6)(7)函数等价

4、tf.Variable

99c1195e2590b66d40076edeffd59666.png

tf.Variable初始化一个变量,initial_value初始化的值一般可是tf.truncated_normal()、tf.random_normal(shape,mean, stddev),name变量的名称,tf.Variable当在使用时如果检测到命名重复时,则系统会自动处理,不会报错

5、tf.get_variable

f7d5cea858bfa6dad2704e43f8bd6ddf.png

tf.get_variable和tf.variable()基本相同,差别是tf.get_variable如果两个变量名相同时则会报错

6、tf.variable_scope

9f1cc4b42cfcd4dbe8e12993c6ef9b31.png

tf.variable_scope可以让变量有相同的命名,包括tf.get_variable得到的变量,还有tf.Variable的变量

7、tf.name_scope

f490d5c69d996d7747632cb98ede7a84.png

745c426fcc4ed497ddb26417c9978e96.png

tf.name_scope可以让变量有相同的命名,只是限于tf.Variable的变量

8、tf.reduce_max

b2b939b5b895a1c0fb45adcce8d768d8.png

reduce_max根据axis取行或列的最大值,axis=1按行取最大值,axis=0按列取最大值

9、tf.reduce_mean

85705befebe556ee517e3e7273c4bbd2.png

tf.reduce_mean用于计算张量按指定维度axis上的平均值,主要用作降维和计算平均值

10、tf.sequence_mask

14079b911aeef9c8cef2199dee6f98c9.png

8ceda3bc787d2b1422136165239d6a87.png

构建序列长度的mask标志,lengths:整数张量,maxlen:最大长度

11、tf.reverse_sequence

96b18cff9cd8e17de47173278257ce5b.png

6df17337b4025ca4fa618792cabfb7cb.png

tf.reverse_sequence:对输入的序列进行反转

input_x:输入的待反转的tensor

seq_lengths:一个tensor,表示反转的序列长度是多少,在LSTM中统一设定为输入语句的长度代表着整句话都进行反转

seq_axis,batch_size代表需要反转的轴

seq_aixs=1,batch_size=0代表以行为单位进行反转,反转的是每一列的元素,seq_aixs=0,batch_size=1代表以列为单位进行反转,反转的是每一行的元素

12、tf.multipy

20c876c293523aab72419a4ee332bccc.png

tf.multipy用于计算矩阵之间的element-wise乘法,要求矩阵的维度必须一致(或者其中一维为1),否则会报错

13、tf.matmul

9c0dac6065416c3319fdcf5118ecdeba.png

tf.matmul是tensor的矩阵乘法,参与运算的两个tensor维度和数据类型必须一致,如果tensor是二维的,则相当于矩阵乘法

14、tf.tensordot

5c62b5f639afe840957a7f32fb37d676.png

tf.tensordot矩阵乘法运算,参与运算的两个tensor的维度可以不一样,但两个矩阵相邻的维度必须相同

15、tf.layers.conv1d

042c34f57294abd1d1420e2367acb0cf.png

conv1d一维卷积主要是用于对于文本的卷积,比较关键的几个参数inputs输入的tensor,filters过滤器的个数,kernel_size卷积核大小,卷积核维度是(kernel_size, embedding_size)

16、tf.layers.dense

8d86ecf4992f377d2d779ee2aa4a3f61.png

tf.layers.dense是全连接的最后一层,inputs:输入全连接层的tensor,units:输出数据的维度,activation:使用的激活函数

17、tf.where

4d8f31345f5bc1652f5a234353333931.png

(1) tf.where(input,name=None)

(2) tf.where(input,a, b)

tf.where有以上两种用法

tf.where(input)是返回位置为True的元素的下标索引,tf.where(input, a, b)则是输入的a,b是同维度的,若input为true则返回a对应的元素,若input为false则返回b中对应的元素

18、tf.argmax

09d737352cf7539c030a54b213274779.png

tf.argmax返回tensor最大值所对应的下标,inputs指输入的tensor,axis=1按行取最大值,axis=0按列取最大值

19、tf.equal

1c7049f860a0bb7184a248bf78d8be78.png

tf.equal(A,B)是对比这两个矩阵或者向量的相等的元素,如果是相等的那就返回True,反正返回False,返回的值的矩阵维度和A一样

20、tf.cast

437815feac80833d94f14aed294731b6.png

tf.cast将x的数据类型转化成dtype

21、tf.tile

41715e8de9a5c36fa17e6045b05574e5.png

tf.tile将输入的张量按照维度进行复制,multiples表示复制方式

22、tf.concat

9b5db0a5027cb662e3b9621771e1dfae.png

tf.concat用来张量拼接,主要便是如何拼接,根据axis轴信息进行张量的拼接

23、tf.transpose

cb8c310dd2a60f58c4eedc289b394519.png

tf.transpose主要是用于交换输入张量的不同维度使用的,当输入张量是二维时,则交换张量的维度就相当于张量转置

24、tf.ones_like(inputs)、tf.zeros_like(inputs)

336b983b95c2233163b2fd03b6cb0282.png

给定一个输入inputs,tf.ones_like返回一个和输入维度相同但元素都为1的tensor

而tf.zeros_like则返回一个和输入inputs维度都相同但元素都为0的tensor

25、tf.square()

dbc28c79f963cca2eae10a8fbe80a8d3.png

26、tf.squeeze

ba4a79f8d48526831b317f89bb574ca9.png

该函数返回一个张量,这个张量是将原始input中所有维度为1的那些维都删掉的结果,axis可以用来指定要删掉的为1的维度,要注意指定的度必确保其是1,否报错

27、tf.truncated_normal、tf.random_normal

6e587abf77178192e975daeef5557fb4.png

(1) tf.truncated_normal(shape, mean, stddev)  其中shape表示生成张量的维度,mean表示均值,stddev表示标准差

(2) tf.random_normal(shape, mean, stddev) 参数和tf.truncated_normal()相同

二者的区别是 tf.truncated_normal()是截断正态分布,产生正太分布的值如果与均值的差值大于两倍的标准差,那就重新生成

28、tf.random_uniform

7dca677b52c9c028d1e90e23f241d898.png

tf.random_uniform((m, n), minval=low, maxval=high, dtype=tf.float32)))  返回m*n的矩阵,值在low和high之间

29、tf.expend_dims

02969c30b8ea09827fb2084385b214af.png

tf.expend_dims将input维度增加一维, dim就是自己可以选择增加维度的位置,dim=-1就表示从最后开始增加,可通过下面示例理解此函数含义

30、tf.nn.relu

91b0d65ad9acbdd71fd5d7794fba4fd2.png

计算方式:result = max(features, 0)

31、tf.nn.relu6

ac5675919bfe9c925ac73e06d5a86b52.png

计算方式result = min(max(features, 0), 6)

32、tf.nn.softplus

3a9f4bf2f8b001204824018dfa01f763.png

计算方式:result = log(exp(features) + 1)

33、tf.nn.dropout

a91c083063747b06a3ad3cb9c28292b0.png

tf.nn.dropout防止过拟合函数

34、tf.nn.bias_add

39052ea9f44f4bf04367fbe821bd14c2.png

广播,bias_add()可以处理不同形状的数组

35、tf.sigmoid

04192f080160b6d3725af7e48e33b20d.png

计算方式:y = 1/(1 + exp(-x))

36、tf.tanh

e29e54e21819f3aa5fe835213bd13497.png

计算方式:y = (exp(x) - exp(-x))/(exp(x) + exp(-x))

往期精彩:

干货 | Attention注意力机制超全综述

文本主题模型之LDA基础及实现

机器学习中优化相关理论知识简述

自己动手实现一个神经网络多分类器

Transformer 模型的 PyTorch 实现

干货 | NLP中的十个预训练模型

我们在北京的果壳生活

干货|一文弄懂机器学习中偏差和方差

FastText原理和文本分类实战,看这一篇就够了

Transformer模型细节理解及Tensorflow实现

GPT,GPT2,Bert,Transformer-XL,XLNet论文阅读速递

机器学习算法篇:最大似然估计证明最小二乘法合理性

Word2vec, Fasttext, Glove, Elmo, Bert, Flair训练词向量教程+数据+源码

32b5abba1025b80135ae7f0310e2659e.png

原创不易,别偷偷摸摸的在看,有用就点个好看呀fc3d08bec2243f12bba882d8be4a82f9.png

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐