首先在得到embeddingout的结构后,声明一个RNN单元,大小为10
cell = tf.nn.rnn_cell.BasticRNNCell(num_utis = 10)
计算output和state
output,state = tf.nn.dynamic_rnn(cell,embedding_output,dtype = tf.float32)
然后可以添加droupout
output = tf.nn.droupout(output,0.01)
如果你的需要lstm最后一个节点的结果,也就是最后一个time跑完的结果,那么
你需要转置,然后每一个的最后输出拼成矩阵,然后拿出来
output = tf.transpose(output,[1,0,2])
last = tf.gather(output,int(output.get_shape()[0]-1)
为了完成预测,需要在此之上连接一个全连接层,来将rnn_size的数据输出为你的类别大小
weight = tf.Variable(tf.truncated_normal(tf.truncated_normal(rnn_size,2),stddev=0.1))
bias = tf.Variable(tf.constant(0.1,shape=[2]))
logits_out = tf.nn.Softmax(tf.matmul(last,weight)+bias)
此时输出的维度和你的目标维度相同,就可以计算loss了
losses = tf.nn.sparse_softmax_cross_entropy_with_logits(logits_out,y_output)
loss = reduce_mean(losses)
接下来就是创建优化器,最后就是迭代了。