文章标题

来源:互联网 发布:剑灵邀请一直网络忙 编辑:程序博客网 时间:2024/06/01 09:47

第一天接触深度学习tensorflow,简单记录一下今天的代码尝试。首先当然是mnist数据集。这里忽略tensor等基本知识,因为目前还不是很了解,先从mnist代码找一下初试感觉。
1 首先要配置好tensorflow,进行“hello world”测试,交互平台用的pycharm
2 开始码mnist代码
mnist数据集下载和读取数据
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)

运行程序run
然后会在工程文件下看到新建了一个MNIST_data文件,里边包含了下载好的mnist数据集;
导入tensorflow:

import tensorflow as tf

定义x,x不是具体的价值,这是一个placeholder值,当我们要求TensorFlow运行一个计算时,我们将输入一个值。我们希望能够输入任何数量的MNIST图像,每个图像被平铺成784维的向量。我们将其表示为具有形状的浮点数的2-D张量[None, 784]。(这里None表示尺寸可以是任意长度。)

x = tf.placeholder(tf.float32, [None, 784])

我们还需要我们的模型的权重和偏差。我们可以想象,像其他输入一样处理这些信息,但是TensorFlow有一个更好的处理方式:Variable。A Variable是一个可修改的张量,居住在TensorFlow的交互操作图中。它可以被计算使用甚至修改

W=tf.Variable(tf.zeros([784,10]))b=tf.Variable(tf.zeros([10]))

模型定义,这里只用一层softmax ,y为预测值,

y = tf.nn.softmax(tf.matmul(x, W) + b)

y_为样本真实标签

y_ = tf.placeholder(tf.float32, [None, 10])

然后我们可以实现交叉熵函数
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))
首先,tf.log计算每个元素的对数y。接下来,我们将每个元素乘以y_相应的元素tf.log(y)。然后 tf.reduce_sum,由于该reduction_indices=[1]参数,在y的第二维中添加元素 。最后,tf.reduce_mean计算批次中所有示例的平均值。
用反向传播算法训练:

train_step = tf.train.GradientDescentOptimizer(0.05).minimize(cross_entropy)

cross_entropy使用 学习率为0.5 的 梯度下降算法进行最小化。
我们现在可以在以下模式中启动InteractiveSession:
sess = tf.InteractiveSession()

全局变量初始化:

tf.global_variables_initializer().run()

训练
for _ in range(1000):
batch_xs, batch_ys = mnist.train.next_batch(100)
sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})

评估模型:

correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

我这里迭代一万次,准确率为92.2%

原创粉丝点击