TensorFlow使用体验

以前玩深度学习一直是用的theano和keras,做为谷粉不能不试一下大热的TensorFlow。首先安装起来。

TensorFlow的安装指南非常详细,我是python的anaconda环境,所以直接先创建一个新环境,创建前先更新一下conda

conda update conda
conda update anaconda

看一下目前计算机上有哪些环境

conda info --env

目前只有root环境,所以新建一个专门为TensorFlow的环境,并将root中的包克隆过来

conda create --name tensorflow --clone root

激活使用环境

source activate tensorflow

退出环境

source deactivate

使用pip来安装

pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.8.0-py2-none-any.whl

然后我们可以使用jupyter notebook来启动,下面是两个最简单的示例。

In [15]:
# 线性回归示例
import tensorflow as tf
import numpy as np

# 根据真实关系创建100个样本  y = x * 0.1 + 0.3
x_data = np.random.rand(100).astype(np.float32)
y_data = x_data * 0.1 + 0.3

# 其中截距项b和斜率项W是待估计的参数 y_data = W * x_data + b
# 需要先定义参数,并给初始值
W = tf.Variable(tf.random_uniform([1], -1.0, 1.0))
b = tf.Variable(tf.zeros([1]))
# 定义参数和变量间的关系
y = W * x_data + b

# 定义均方误做为损失函数,后面它是最优化的目标函数
# reduce_mean是对一个tensor求均值并坍缩为一个常数
loss = tf.reduce_mean(tf.square(y - y_data))
# 定义优化器,参数0.5为学习率
optimizer = tf.train.GradientDescentOptimizer(0.5)
# 定义优化器的最小化运算目标
train = optimizer.minimize(loss)

# 初始化所有变量
init = tf.initialize_all_variables()

# 启动整个运算流程
sess = tf.Session()
sess.run(init)

#  通过循环迭代计算
for step in xrange(201):
    sess.run(train)
    if step % 20 == 0:
        print(step, sess.run(W), sess.run(b), sess.run(loss))

# Learns best fit is W: [0.1], b: [0.3]
(0, array([ 0.61638772], dtype=float32), array([ 0.02258076], dtype=float32), 0.02007756)
(20, array([ 0.25472665], dtype=float32), array([ 0.21643446], dtype=float32), 0.001806676)
(40, array([ 0.14641654], dtype=float32), array([ 0.27493113], dtype=float32), 0.0001625907)
(60, array([ 0.11392454], dtype=float32), array([ 0.29247957], dtype=float32), 1.4632288e-05)
(80, array([ 0.10417723], dtype=float32), array([ 0.29774395], dtype=float32), 1.3168243e-06)
(100, array([ 0.10125311], dtype=float32), array([ 0.29932323], dtype=float32), 1.1850291e-07)
(120, array([ 0.10037591], dtype=float32), array([ 0.299797], dtype=float32), 1.0663627e-08)
(140, array([ 0.10011276], dtype=float32), array([ 0.2999391], dtype=float32), 9.5966568e-10)
(160, array([ 0.10003382], dtype=float32), array([ 0.29998174], dtype=float32), 8.6334516e-11)
(180, array([ 0.10001013], dtype=float32), array([ 0.29999453], dtype=float32), 7.7622622e-12)
(200, array([ 0.10000303], dtype=float32), array([ 0.29999837], dtype=float32), 6.9795726e-13)
In [ ]:
In [1]:
# 数字图像识别示例--用多分类逻辑回归方法
# 读取内置数据集
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets('MNIST_data', one_hot=True)
Extracting MNIST_data/train-images-idx3-ubyte.gz
Extracting MNIST_data/train-labels-idx1-ubyte.gz
Extracting MNIST_data/t10k-images-idx3-ubyte.gz
Extracting MNIST_data/t10k-labels-idx1-ubyte.gz
In [2]:
import tensorflow as tf
sess = tf.InteractiveSession()
# 定义X和Y数据
x = tf.placeholder(tf.float32, shape=[None, 784])
y_ = tf.placeholder(tf.float32, shape=[None, 10])
# 定义参数
W = tf.Variable(tf.zeros([784,10]))
b = tf.Variable(tf.zeros([10]))
In [14]:
# 初始化
sess.run(tf.initialize_all_variables())
# 定义Y的生成过程,x和w矩阵相乘后通过softmax映射M
y = tf.nn.softmax(tf.matmul(x,W) + b)
# 定义交叉熵
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))
In [17]:
# 定义优化器
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
In [19]:
# 开始运算,每50个样本做一批喂入算法
for i in range(1000):
  batch = mnist.train.next_batch(50)
  train_step.run(feed_dict={x: batch[0], y_: batch[1]})
In [25]:
# 计算正确率
correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
print(accuracy.eval(feed_dict={x: mnist.test.images, y_: mnist.test.labels}))

0.9171

转载需保留链接来源:软件玩家 » TensorFlow使用体验

赞 (1)