tensorflow中的lstm,rnn

注意到tensorflow中定义一个cell(BasicRNNCell/BasicLSTMCell/GRUCell/RNNCell/LSTMCell)结构的时候需要提供的一个参数就是hidden_units_size,即下面语句种的size

lstm_cell = tf.nn.rnn_cell.BasicLSTMCell(size, forget_bias=0.0, state_is_tuple=True)

问题1:state_is_tuple=True的作用

答:每个lstm cell在t时刻都会产生两个内部状态h和c,这两个状态在tensorflow种都有记录,若

state_is_tuple=True,那么h和c就是分开记录,放在一个tuple中,若

state_is_tuple=False,两个状态就按列连起来,成为[batch,2n](其中n是hidden units个数),官方讲这种形式马上要被舍弃了,个人理解是在lstm内部,h=c,把两个相同的东西重复下也没什么意义。

embedding input

我们预处理了数据之后得到的是一个二维array,每个位置的元素表示这个word在vocabulary中的index。
但是传入graph的数据不能讲word用index来表示,这样词和词之间的关系就没法刻画了。我们需要将word用dense vector表示,这也就是广为人知的word embedding。
paper中并没有使用预训练的word embedding,所有的embedding都是随机初始化,然后在训练过程中不断更新embedding矩阵的值。



猜你喜欢

转载自blog.csdn.net/weixin_38145317/article/details/79648584