最近试着学了一下 TensorFlow ,正在做 Tutorial 呢
但是碰到了个问题不知道怎么解决
这个教程:
http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/mnist_tf.html
我已经根据教程做到能训练,评估了,但是我想知道,
教程中用的是 1000X784 的训练集,然后也用 1000X784 的测试集,
那如果我有一个单一的数据,就是 1X784 的,我也想用这个算法求出来可能的结果,
那我应该怎么做?
我自己试过了,只要输入的训练集大小不一样,就会报错,真是不会了
1
sleeperqp 2016-01-02 18:21:13 +08:00 1
|
2
zwpaper OP @sleeperqp 谢谢你!
在你的提醒下,我能求出来结果了,但是结果应该是一个 0 和 1 的数组,我却只能得到 float 的数组,也不是约等于 0 或 1 的。 我看在评估测试集的时候,用的了一个 tf.nn.in_top_k(logits, labels, 1),得到的结果居然也是 90%左右 tf.nn.in_top_k(logits, labels, 1) 应该就是要找预测结果在正确的可能性是前 K 的,这时 K 是 1 ,那就应该是完全符合才对的 那为什么得到的结果不是 0 , 1 数组呢? |
3
sleeperqp 2016-01-02 22:36:25 +08:00
不知道是不是十个数的数组
如果是的话 应该对应是 0-9 的概率数组 如果你要得到这个结果可以 argmax 这样就可以得到预测是哪个数字了 |
4
zwpaper OP @sleeperqp 对,用 argmax 可以找到这个数组最大的那个数,好像是代表结果
但是我现在不理解的是,在学习的过程中目标值 y 一直是 0 1 数组,但是训练出来的结果虽说也是最大值的序号代表结果,但是为什么会是一些不随机数呢? 这个应该是和 FNN 这个算法相关的了吧? |
5
sleeperqp 2016-01-03 22:39:12 +08:00 1
@zwpaper 不太懂你说的随机数指什么?
首先虽然训练集中的 y 等于 label 一般为整数,但是其实实质上在训练过程中转换成(0,0,0...1...0,0,0)^T 其中 1 处在第 y 位上 比如一共有 3 类 数据点的 y 值为 2(从 0 开始) 则训练过程中转化为 (0,0,1) 另外 你可以看下 softmax 一般在神经网络的隐含层到输出层用的是 softmax 目的是归一化多类别的输出 比如 logistic regression 是解决二类分类问题,将实数集投射到(-1,1)上 而 softmax 则是将类别的输出(output1,output2...outputn)投射到(p1,p2...pn) 其中 p1+p2+..Pn=1 且 0<=pi<=1 这个就是你看到 10 个数的数组 我也是新手 不知道能不能解决你的问题 |
6
zwpaper OP @sleeperqp 我终于明白了!太感谢你了!
当时不明白的就是我觉得本应该输出的也是 (0,0,0...1...0,0,0)^T 这样的结果 但是得到的总是 (2.00172349e-06, 9.99997973e-01, ...)^T 这样的结果,也是最大的数的序号表示结果。 当时一直在想为什么不是只有 0 和 1 ,现在看来就是这个算法的结果就是这样的 softmax 一句话讲解,赞! |
8
microhan 2016-03-17 15:27:46 +08:00
哥们,留个联系方式,或者加我 QQ ,赠书给你。
|
9
microhan 2016-03-17 15:28:09 +08:00
295164745
|