从RNN的输出结果到loss的计算

首先在得到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)

接下来就是创建优化器,最后就是迭代了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值