• MNIST数据集入门


    简单的训练MNIST数据集 (0-9的数字图片)

    详细地址(包括下载地址):http://www.tensorfly.cn/tfdoc/tutorials/mnist_beginners.html

    # -*- coding: utf-8 -*-
    import tensorflow as tf
    import numpy as np
    import input_data  # 需要下载数据集(包括了input_data)
    # 加载数据集 mnist
    = input_data.read_data_sets("MNIST_data/", one_hot=True) # minist用来获取批处理数据 # x: 任意数量的MNIST图像,每一张图展平成784维的向量。我们用2维的浮点数张量来表示这些 # 图,这个张量的形状是[None,784 ]。(这里的None表示此张量的第一个维度可以是任何 # 长度 batch取批量的大小 x图片的数量。) x = tf.placeholder("float", shap=[None, 784]) # placeholdershape参数是可选的,但有了它,TensorFlow能够自动捕捉因数据维度不一致导致的错误。 # 图片设为“xs”,把这些标签设为“ys” # softmax模型可以用来给不同的对象分配概率 W = tf.Variable(tf.zeros([784, 10])) # 28*28, 0-9 b = tf.Variable(tf.zeros([10])) # 0-9 # 构建模型 y = tf.nn.softmax(tf.matmul(x, W) + b) # y概率 # 训练构建的模型 # 先定义指标评估模型好坏(指标称为 成本cost,损失loss。小化这个指标) # 成本函数“交叉熵”cross-entropy。 # 计算交叉熵 需要添加新的占位符 y_: 实际分布one-hot [1,0,0,0,0,0,0,0,0,0] ?? y_ = tf.placeholder("float", [None, 10]) # 交叉熵 cross_entropy = -tf.reduce_sum(y_ * tf.log(y)) # tf的优化算法,根据交叉熵降低指标(成本,损失) # 梯度算法,0.01的学习率不断地最小化交叉熵(指标) train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy) # 运行模型前,初始化创建的变量 init = tf.initialize_all_variables() # 启动init sess = tf.Session() sess.run(init) # 开始训练模型1000次 for i in range(1000): # 获得100个批处理数据点 batch_xs, batch_ys = mnist.train.next_batch(100) # 进行梯度算法 sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys}) # 评估模型tf.argmax(x, 1) # 给出某个tensor对象在某一维上的其数据最大值所在的索引值。由于标签向量是由0,1组 # 成,因此最大值1所在的索引位置就是类别标签,比如tf.argmax(y,1)返回的是模型对于 # 任一输入x预测到的标签值,而 tf.argmax(y_,1) 代表正确的标签,我们可以用 # tf.equal 来检测我们的预测是否真实标签匹配(索引位置一样表示匹配)。 current_prediction = tf.equal(tf.argmax(y, 1), tf.arg_max(y_, 1)) # 其结果为bool值 [True, False, ...] # 为了确定正确预测项的比例,我们可以把布尔值转换成浮点数,然后取平均值 accuracy = tf.reduce_mean(tf.cast(current_prediction, "float")) # 运行accuracy print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels})) # 结果约为 91% 左右
  • 相关阅读:
    C#的泛型的类型参数可以有带参数的构造函数的约束方式吗
    Object Pool
    链表排序(冒泡、选择、插入、快排、归并、希尔、堆排序)
    ASP.NET MVC应用程序使用axd格式文件
    框架设计--服务总线
    Mylyn
    不要问我能赚多少,当你问这句话的时候,你的思想还停留在给别人打工的阶段,我只是你的仓库,能挣多少得问你自己想挣多少(转)
    maven中如果使用本地jar
    君子和而不同,小人同而不和
    失去控制,并随之失去指挥
  • 原文地址:https://www.cnblogs.com/tangpg/p/9173845.html
Copyright © 2020-2023  润新知