1.tensorflow基本概念
使用图(graphs)来表示计算任务
在被称之为会话(Session)的上下文(context)中执行图
使用tensor表示数据
通过变量(Variable)维护状态
使用feed和fetch可以为任意的操作赋值或者从其中获取数据
Tensorflow是一个编程系统,使用图(graphs)来表示计算任务,图(graphs)中的节点称之为op(operation),一个op获得0个或多个Tensor,执行计算,产生0个或多个Tensor。 Tensor 看作是一个 n 维的数组或列表。图必须在会话(Session)里被启动。
2.用python启动图
import tensorflow as tf #创建一个常量op m1=tf.constant([[3,3]]) #创建一个常量op m2=tf.constant([[2],[3]]) #创建一个矩阵乘法, 把m1和m2传入 product=tf.matmul(m1,m2) print (product) #定义一个会话,启动默认图 sess=tf.Session() #调用sess的run方法来执行矩阵乘法op #run(product)触发了图中3个op result=sess.run(product) print(result) #关闭会话 sess.close() #下面这种定义方法不需要close: #with tf.Session() as sess: # result=sess.run(product) # print(result)
3.变量的使用
import tensorflow as tf x=tf.Variable([1,2]) a=tf.constant([3,3]) #增加一个减法op sub=tf.subtract(x,a) #增加一个加法op add=tf.add(x,a) #初始化所有变量 init=tf.global_variables_initializer() with tf.Session() as sess: sess.run(init) print(sess.run(sub)) print(sess.run(add))
结果:
import tensorflow as tf #创建一个变量,初始化为0 state=tf.Variable(0,name='counter') #创建一个加法op,作用是使state加1 new_value=tf.add(state,1) #赋值op update=tf.assign(state,new_value) #初始化所有变量 init=tf.global_variables_initializer() with tf.Session() as sess: sess.run(init) print(sess.run(state)) for _ in range(5): sess.run(update) print(sess.run(state))
结果:
4.fetch 在一个会话里执行多个op,得到其结果
import tensorflow as tf #Fetch input1=tf.constant(3.0) input2=tf.constant(2.0) input3=tf.constant(5.0) add=tf.add(input2,input3) mul=tf.multiply(input1,add) with tf.Session() as sess: result=sess.run([mul,add]) print(result)
结果:
feed可以临时替代图中的任意操作中的 tensor 可以对图中任何操作提交补丁, 直接插入一个 tensor.
import tensorflow as tf #Feed #创建占位符 input1=tf.placeholder(tf.float32) input2=tf.placeholder(tf.float32) output=tf.multiply(input1, input2) with tf.Session() as sess: #feed的数据以字典的形式传入 print(sess.run(output,feed_dict={input1:[7.0],input2:[2.0]}))
结果:
5.使用案例
import tensorflow as tf import numpy as np #使用numpy生成100个随机点 x_data=np.random.rand(100) y_data=x_data*0.1+0.2 #构造一个线性模型 b=tf.Variable(0.) k=tf.Variable(0.) y=k*x_data+b #二次代价函数 loss=tf.reduce_mean(tf.square(y_data-y)) #定义一个梯度下降法来进行训练的优化器 0.2学习率 optimizer=tf.train.GradientDescentOptimizer(0.2) #定义一个最小化代价函数 train=optimizer.minimize(loss) #初始化变量 init=tf.global_variables_initializer() with tf.Session() as sess: sess.run(init) for step in range(201): sess.run(train) if step%20==0: print(step,sess.run([k,b]))
结果: