以前玩深度学习一直是用的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]
In [ ]:
In [1]:
# 数字图像识别示例--用多分类逻辑回归方法
# 读取内置数据集
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets('MNIST_data', one_hot=True)
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}))
转载需保留链接来源:软件玩家 » TensorFlow使用体验