TensorFlow 学习------第一天

placeholder —————占位符————–样本 x 和 真实值 y_
Variable —————-变量—————W 和 b

mnist.train.images 是一个形状为 [60000, 784]
x = tf.placeholder(“float”, [None, 784])
程序将训练集样本矩阵 [60000, 784] 传递给占位符占的坑 x
后面程序又将测试集样本矩阵 [10000, 784] 传递给占位符占的坑 x

x不是一个特定的值,而是一个占位符placeholder,我们在TensorFlow运行计算时输入这个值。我们希望能够输入任意数量的MNIST图像,每一张图展平成784维的向量。我们用2维的浮点数张量来表示这些图,这个张量的形状是[None,784 ]。(这里的None表示此张量的第一个维度可以是任何长度的。)

教程中使用的标签数据是”one-hot vectors”。 一个one-hot向量除了某一位的数字是 1 以外其余各维度数字都是 0。所以在此教程中,数字n将表示成一个只有在第n维度(从 0 开始)数字为 1 的 10 维向量。比如,标签0将表示成([1,0,0,0,0,0,0,0,0,0,0])。因此, mnist.train.labels 是一个 [60000, 10] 的数字矩阵
因此假设样本数为 60000, 标签值 y_ 和 y 都是 [60000, 10] 的矩阵。

真实值 y_ ——————mnist.train.labels
预测值 y
[ 注意TensorFlow文档中,y_ 和 y 表示是多个样本的标签向量构成的矩阵,不是单一样本的标签 ]
[ 这里并没有把分类问题拆分成多个二分类问题,不要自己瞎脑补 ]

tf.argmax
………………………………………………………………………….

tf.argmax 是一个非常有用的函数,它能给出某个tensor对象在某一维上的其数据最大值所在的索引值。由于标签向量是由0,1组成,因此最大值1所在的索引位置就是类别标签,比如tf.argmax(y,1)返回的是模型对于任一输入x预测到的标签值,而 tf.argmax(y_,1) 代表正确的标签,我们可以用 tf.equal 来检测我们的预测是否真实标签匹配(索引位置一样表示匹配)。

correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))
其中 argmax(y,1) 和 argmax(y_,1) 为向量,由最大值1所在的索引位置构成的向量。比如图片 p 的标签向量为 [0,0,0,0,1,0,0,0,0,0,0],则 argmax(p, 1) = 4,4 即为标签向量 [0,0,0,0,1,0,0,0,0,0,0] 对应的标签值(索引值),假设图片 p 的预测标签向量为 [0,0,0,0,0,1,0,0,0,0,0],则 argmax值为 5,tf.equal(4, 5) == False

accuracy = tf.reduce_mean(tf.cast(correct_prediction, “float”))
这行代码会给我们一组布尔值。为了确定正确预测项的比例,我们可以把布尔值转换成浮点数,然后取平均值。例如,[True, False, True, True] 会变成 [1,0,1,1] ,取平均值后得到 0.75.

最后,我们计算所学习到的模型在测试数据集上面的正确率。
print sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels})
字典 feed_dict 包含两个 key,两个 values
x, y_ 重新填充占位符。

http://www.tensorfly.cn/tfdoc/tutorials/mnist_beginners.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值