首页 > 其他 > 详细

tensorflow 训练最后预测结果为一个定值,可能的原因

时间:2019-05-13 16:43:54      阅读:501      评论:0      收藏:0      [点我收藏+]

训练一个分类网络,没想到预测结果为一个定值。

找了很久发现,是因为tensor的维度的原因。  注意:我说的是我的label数据的维度。

我的输入是:

y_= tf.placeholder(tf.int32,[None,1])  #维度:(batchsize,1)

我使用的损失函数:

loss = -y_*log(pred)
pred = tf.softmax(wx+b)  #维度:(batch_size,10034) 

 

所以我需要将y_的 维度转化为(batch_size,10034)

我使用的是

y__ = tf.one_hot(y,10034)   #维度是:(batch_size,1,10034),而不是我们的预期:(batch_size,10034)

显然这时有问题的,所以才会在坑中转了好久。

tf.one_hot()的输入数据为一维数组。

正确方法:

y1 = tf.reshape(y_,[-1])     # 变成一维数组(batch_size,)
y__ = tf.one_hot(y1,10034)    # (batch_size,10034)
loss = tf.reduce_mean(-tf.reduce_sum(y__*log(pred),reduction_indices=[1]))

 

tensorflow 训练最后预测结果为一个定值,可能的原因

原文:https://www.cnblogs.com/mengxiangtiankongfenwailan/p/10857114.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!