使用Tensorflow构建LSTM模型所需要使用到的API

前言

在使用tensorflow编写LSTM代码的时候Tensorflow使用LSTM实现中文文本分类(二),使用到很多新的函数,在此将用到的新函数整理一下做一个笔记。

重要方法

tf.random_uniform_initializer()

功能:生成具有均匀分布的张量的初始化器
参数:

minval:一个 python 标量或一个标量张量.要生成的随机值范围的下限
maxval:一个 python 标量或一个标量张量.要生成的随机值范围的上限.对于浮点类型默认为1
seed:一个 Python 整数.用于创建随机种子.查看 tf.set_random_seed 的行为
dtype:数据类型


tf.variable_scope()

参考博客:tf.variable_scope 参数
参数:返回一个用于定义创建variable层的op的上下文管理器
参数(不常用的没有写):

name_or_scope:string或VariableScope:要打开的范围。
default_name:如果name_or_scope参数为None,则将使用默认名称,此名称将被唯一。 如果提供了name_or_scope,它将不会被使用,因此它不是必需的,可以是None。
值:传递给op函数的Tensor参数列表。
initializer:此范围内的变量的默认初始化程序。
dtype:在此范围中创建的变量类型(默认为传递范围中的类型,或从父范围继承)


tf.nn.embedding_lookup()

参考博客:tf.nn.embedding_lookup函数的用法
功能:选取一个张量里面按照索引对应的元素。
参数:

params 可以是tensor,也可以是数组
ids 传入 对应的 索引


tf.contrib.rnn.BasicLSTMCell()

参考博客:记录tf.contrib.rnn.BasicLSTMCell
功能:创建一个LSTM层
参数:

num_uints:神经元数量
forget_bias:遗忘的偏置0-1,0全忘记,1全记得
state_is_tuple:是否返回元组,最好是true,返回元组。
activation:激活函数,默认tanh


tf.contrib.rnn.MultiRNNCell()

参考博客:tf.contrib.rnn.MultiRNNCell()函数的用法
功能:对RNN进行堆叠。即:将每个单层LSTM穿联在一起形成一个多层LSTM。经过转化过的层,可以当做单层LSTM来操作,很方便。
参数:

cells:run cell 的 list
state_is_tuple:同上,非必须、
tf.contrib.rnn.MultiRNNCell.zero_state(batch_size, tf.float32)

功能:通过该函数获得一个全零的初始状态。
参数:

batch_size:batch大小
dtype:数据类型


tf.nn.dynamic_rnn()

博客参考:tf.nn.dynamic_rnn返回值详解https://blog.csdn.net/u010960155/article/details/81707498
功能:使用该函数相当于调用了n次call函数,即通过{h0, x1, x2, x3…xn}直接得到{h1, h2, h3, h4, … hn}
参数:

cell:通过tf.contrib.rnn.MultiRNNCell()堆叠的多层RNN,或者 单层的lstmcell也可以。
inputs:需要 传入的 训练数据
initial_state:初始状态(一般可以是零矩阵)
需要特别强调一下该函数的返回:

outputs:time_step步里所有的输出,他到shape为(batch_size, time_steps, cell.output_size)
state:最后一步的隐状态,形态为(batch_size, cell,state_size)


tf.clip_by_global_norm()

博客参考:tf.clip_by_norm 梯度裁剪
功能:梯度裁剪的最直接目的就是防止梯度爆炸,手段就是控制梯度的最大范式。
参数:

t_list:梯度列表
clip_norm:裁剪率
返回值:
list_clipped:裁剪后的梯度列表
global_norm:全局的规约数


tf.gradients()

博客参考:Tensorflow:tf.gradient()用法以及参数stop_gradient理解
功能:进行梯度计算
参数:

ys:类似于目标函数,即需要被微分的函数
xs:被微分的对象/变量,需要求导的参数
返回:

该函数返回 xs 中每个 x 的 sum(dy/dx) 的列表.


tf.train.AdamOptimizer( learning_rate ).apply_gradients()

博客参考:tensorflow API:梯度修剪apply_gradients和compute_gradients
功能:把梯度“应用”到变量上去。这是minimize()函数的第二个步骤,返回一个应用的操作。
参数:

grads_and_vars:compute_gradients()函数返回的(gradient, variable)对儿的列表。
global_step:可选变量,在变量更新后会自增一。
 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值