一、简介
2015 年 11 月,谷歌发布TensorFlow,已经在图像识别、语音识别、自然语言处理、数据挖掘和预测等 AI 场景中得到了十分广泛的应用。
Tensorflow的特性
- 高度的灵活性:Tensorflow并不是一个严格的神经网络库,只要计算可以表示为一个数据流图,就可以使用Tensorflow。
- 可移植性(Portability)
- 多语言支持
- 性能最优化
二、安装
pip install tensorflow
手工下载安装
http://www.lfd.uci.edu/~gohlke/pythonlibs/#tensorflow 下载whl文件后进行安装。
pip install ***.whl
windows下载需要安装protobuf-3.3.0-py3-none-any.whl。
三、 试验代码
第一个程序
import tensorflow as tf
hello = tf.constant('Hello world')
session = tf.Session()
print(sess.run(hello))
启动一个graph
import tensorflow as tf
a = tf.constant(2)
b = tf.constant(3)
with tf.Session() as sess:
print ("a=2,b=3")
print(Addtion with constants:%i"% sess.run(a+b))
print("Multiplication with constants:%i"%sess.run(a*b))
tensorflow里基本的数据结构是tensor结果。
import numpy as np
imprt tensorflow as tf
import matplotlib.pyplot as plt
a = 3
w = tf.Variable([[0.5,1.0]])
x = tf.Variable([[2.0],[1.0]])
y=tf.matmul(w,x) #乘法操作
init_op = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init_op)
print(y.eval())
要通过session来对数据进行操作。
四、基本概念
- 图(Graph):图描述了计算的过程,Tensor使用图来表示计算任务
- 张量(Tensor):TensorFlow使示tensor表示数据,每个tensor是一个类型化的多维数组。
- 计算(op):图中的节点被称为op(operation的缩写),一个op获得0个或多个Tensor,执行计算,产生0个或多个Tensor。
- 会话(Session):图必须在称之为“会话”的上下文中执行。会话将图的op分发到GPU之类的设备上执行。
- 变量(Variable):运行过程中可以被改变,用于维护状态。
计算图
import numpy as np
a = np.zeros((3,3))
nbarray转换为tensor支持的格式 。
placeholder
input1 = tf.placeholder(tf.float32)
input2 = tf.plcaeholder(tf.float32)
output = tf.mul(input1,input2)
with tf.Session() as sess:
print(sess.run([out[ut], feed_dict={input1:[7.],input2:[2.])))
placeholder定义时没有值,使用时赋值。
[array( 14.],dtype=float32)]
回归操作
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
num_points = 1000
vectors_set =[]
for i in range(num_points):
x1 = np.randowm.normal(0.0,0.55)
y1 = x1 * 0.1 + 0.3 + np.random.normal(0.0,0.03)
vector_set.append([x1,y1]) #高斯初始化一些点
x_data = [v[0] for v in vectors_set]
y_data = [v[1] for v in vectors_set]
plt.scatter
#生成1维的W矩阵,取值是[-1,1]之间的随机数
w=tf.Variable(tf.random_uniform([1],-1.0,1.0),name='w')
# 生成1维的b矩阵,初始值0
b = tf.Variable(tf.zeros([1]),name='b')
#经过计算得出预估值
y = W * x_data + b
# 以预估值y和实际值y_data之间的无均方误差作为操作
loss = tf.reduce_mean(tf.square(y - y_data),name='loss')
# 采用梯度下降法来优化参数
optimizer = tf.train.GradientDescentOptimizer(0.5)
# 主教练的过程就是最小化这个误差值
train = optimizer.minimize(loss,name='train')
sess=tf.Session()
init=tf.global_variables_initializer()
sess.run(init)
# 初始化的W和b是多少
print("W=",sess.run(W),"b=",sess.run(b),"loss=",session.run(loss))
# 执行20次训练
for step in range(20):
sess.run(train) # 执行迭代
#输出训练好的w和b
print("W=",sess.run(W),"b=",session.run(b),"loss=",sess.run(loss))
writer=tf.train.SummaryWriter("./tmp",sess.graph)
plt.scatter(x_data,y_data,c='r')
plt.plot(x_data,sess.run(W)*x_data+sess.run(b))
plt.show()
下面链接是TensorFlow栏目介绍其更详细应用。