一、概念
tensorflow是一个编程系统,使用图(graph)来表示计算任务,图(graph)中的节点称之为op(operation),一个op获得0或者多个tensor,执行计算,产生0或者多个tensor。图必须在会话(session)里被启动。
1. 使用计算图来表示计算任务。
2. 在被称为会话(session)的上下文(context)中执行计算图
3. 使用tensor保存数据。
4. 通过变量(variable)维护状态
5. 使用feed和fetch可以为任意的操作赋值或者从中获取数据。
二、TensorFlow结构
graph:图,用来表示计算任务
operation:操作,是图的节点。例加、减等等
session:会话,图在会话中才能执行完成计算任务。
三、代码
例子1:
import tensorflow as tf
#创建一个常量op
m1=tf.constant([[3,3]])
#创建一个常量
m2=tf.constant([[2],[3]])
#创建矩阵乘法op
product=tf.matmul(m1,m2)
print(product)#输出Tensor("MatMul:0", shape=(1, 1), dtype=int32)。使用session才能真正执行计算
#定义session会话,启动图
sess=tf.Session()
with tf.Session()as sess:
#调用sess的run执行计算
result=sess.run(product)
print(result)
例子2:
import tensorflow as tf
import numpy as np
x_data=np.random.rand(100).astype(np.float)
y_data=x_data*0.1+0.3
'''创建TensorFlow架构开始'''
#创建变量
Weight=tf.Variable(tf.random_uniform([1],-1.0,1.0))#初始-1-1
biases=tf.Variable(tf.zeros([1]))
y=Weight*x_data+biases
#损失函数
loss=tf.reduce_mean(tf.square(y-y_data))
#优化
optimizer=tf.train.GradientDescentOptimizer(0.5)#学习率0.5
train=optimizer.minimize(loss)
#初始化变量
init=tf.initialize_all_variables()
'''创建TensorFlow架构结束'''
with tf.Session() as sess:
#运行计算图首先要激活init
sess.run(init)#sess.run()传入什么参数就处理什么。
for step in range(201):
sess.run(train)
if step%20==0:
print(step,sess.run(Weight),sess.run(biases))
# 输出:
# 0 [0.17058933] [0.37553135]
# 20 [0.10502829] [0.29712766]
# 40 [0.10122193] [0.29930198]
# 60 [0.10029694] [0.29983038]
# 80 [0.10007216] [0.2999588]
# 100 [0.10001753] [0.29999]
# 120 [0.10000426] [0.29999757]
# 140 [0.10000104] [0.29999942]
# 160 [0.10000027] [0.29999986]
# 180 [0.10000012] [0.29999992]
# 200 [0.10000012] [0.29999992]
1.Session
import tensorflow as tf
matrics1=tf.constant([[3,3]])
matrics2=tf.constant([[2],[2]])
product=tf.matmul(matrics1,matrics2)
'''第一种方式使用session:'''
sess=tf.Session()
result=sess.run(product)
print(result)#[[12]]
sess.close()
'''第二种方式使用session:'''
with tf.Session() as sess:
result2=sess.run(product)
print(result2)#[[12]]
2.Variable
import tensorflow as tf
'''定义变量'''
state=tf.Variable(0,name='counter')#初始值,名字
print(state.name)#counter:0
one=tf.constant(1)#初始值
new_state=tf.add(state,one)#变量+常量=变量
updata=tf.assign(state,new_state)#赋值
'''初始化变量'''
init=tf.initialize_all_variables()
with tf.Session() as sess:
'''run(init)'''
sess.run(init)
for _ in range(3):
sess.run(updata)
print(sess.run(state))#直接print(state)是不可以的必须用sess。run(state)
3.Placeholder
import tensorflow as tf
"""
variable是已经规定好了初始值
placeholder是在sess.run实时传入初始值
"""
input1=tf.placeholder(tf.float32,[1,2])#数据类型,数据的结构
input2=tf.placeholder(tf.float32,[1,2])
output=tf.mul(input1,input2)
with tf.Session() as sess:
print(sess.run(output,feed_dict={input1:[7,7],input2:[2,3]}))#sess.run(节点,传入的值)