V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zwpaper
V2EX  ›  机器学习

有用过 TensorFlow 的 V2er 吗?

  •  
  •   zwpaper · 2016-01-02 16:23:35 +08:00 · 1870 次点击
    这是一个创建于 3230 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近试着学了一下 TensorFlow ,正在做 Tutorial 呢
    但是碰到了个问题不知道怎么解决

    这个教程:
    http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/mnist_tf.html

    我已经根据教程做到能训练,评估了,但是我想知道,
    教程中用的是 1000X784 的训练集,然后也用 1000X784 的测试集,
    那如果我有一个单一的数据,就是 1X784 的,我也想用这个算法求出来可能的结果,
    那我应该怎么做?

    我自己试过了,只要输入的训练集大小不一样,就会报错,真是不会了

    9 条回复    2016-03-17 15:28:09 +08:00
    sleeperqp
        1
    sleeperqp  
       2016-01-02 18:21:13 +08:00   ❤️ 1
    zwpaper
        2
    zwpaper  
    OP
       2016-01-02 21:48:26 +08:00
    @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 数组呢?
    sleeperqp
        3
    sleeperqp  
       2016-01-02 22:36:25 +08:00
    不知道是不是十个数的数组
    如果是的话 应该对应是 0-9 的概率数组
    如果你要得到这个结果可以 argmax 这样就可以得到预测是哪个数字了
    zwpaper
        4
    zwpaper  
    OP
       2016-01-03 20:53:13 +08:00
    @sleeperqp 对,用 argmax 可以找到这个数组最大的那个数,好像是代表结果
    但是我现在不理解的是,在学习的过程中目标值 y 一直是 0 1 数组,但是训练出来的结果虽说也是最大值的序号代表结果,但是为什么会是一些不随机数呢?
    这个应该是和 FNN 这个算法相关的了吧?
    sleeperqp
        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 个数的数组

    我也是新手 不知道能不能解决你的问题
    zwpaper
        6
    zwpaper  
    OP
       2016-01-04 12:06:08 +08:00
    @sleeperqp 我终于明白了!太感谢你了!
    当时不明白的就是我觉得本应该输出的也是 (0,0,0...1...0,0,0)^T 这样的结果
    但是得到的总是 (2.00172349e-06, 9.99997973e-01, ...)^T 这样的结果,也是最大的数的序号表示结果。
    当时一直在想为什么不是只有 0 和 1 ,现在看来就是这个算法的结果就是这样的

    softmax 一句话讲解,赞!
    sleeperqp
        7
    sleeperqp  
       2016-01-04 14:26:35 +08:00
    @zwpaper 客气了 我也是新手 共同进步~~ 嘿嘿~~
    microhan
        8
    microhan  
       2016-03-17 15:27:46 +08:00
    哥们,留个联系方式,或者加我 QQ ,赠书给你。
    microhan
        9
    microhan  
       2016-03-17 15:28:09 +08:00
    295164745
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2192 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 00:01 · PVG 08:01 · LAX 16:01 · JFK 19:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.