Tensorflow基本概念:
- 使用图(graphs)来表示计算任务
- 在被称为会话(Session)的上下文(context)中执行图
- 使用tensor表示数据
- 通过变量(Variable)维护状态
- 使用feed和fetch可以为任意的操作复制或者从其中获取数据
Tensorflow是一个 编程系统,使用图(graphs)来表示计算任务,图(graphs)中的节点称之为op(operation),一个op获得0个或多个Tensor,执行计算,产生0个或多个tensor,tensor看作是一个n维的数组或列表。图必须在会话里启动。
会话和图的创建与使用
#创建一个常量op
m1=tf.constant([[3,3]])
m2=tf.constant([[2],[3]])
#矩阵相乘
product=tf.matmul(m1,m2)
print(product)
print("test")
上述只是一个操作,没用放在会话里,所以也不会执行
#定义一个会话,启动默认图
sess=tf.Session()
result=sess.run(product)
print(result)
sess.close()
with tf.Session() as sess:
result=sess.run(product)
print(result)
变量的创建与使用
shift+tab查询描述
tab键补全
shift+enter运行块
#定义变量
#shift+tab查询描述
x=tf.Variable([1,2])
a=tf.constant([2,3])
add=tf.add(x,a)
sub=tf.subtract(x,a)
init=tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
ad=sess.run(add)
su=sess.run(sub)
print(ad,su)
根据变量实现循环
#创建变量初始化为0
state=tf.Variable(0,name="counter")
new_value=tf.add(state,1)
#赋值操作
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))
fetch和feed:
fetch:执行多个op,得到执行结果
x1=tf.constant(3.0)
x2=tf.constant(2.0)
x3=tf.constant(4.0)
add=tf.add(x1,x2)
mul=tf.multiply(x2,x3)
with tf.Session() as sess:
print(sess.run([add,mul]))
feed
# 创建占位符
v1=tf.placeholder(tf.float32)
v2=tf.placeholder(tf.float32)
mul=tf.multiply(v1,v2)
with tf.Session()as sess:
print(sess.run(mul,feed_dict={v1:[2.4,1],v2:[2.0,23]}))
线性回归的实现
#生成100个随机点
x_data=np.random.rand(100)
y_data=0.1*x_data+0.2
b=tf.Variable(0.)
k=tf.Variable(0.)
y=k*x_data+b
# 二次代价函数
# 平均值
loss=tf.reduce_mean(tf.square(y_data-y))
# 梯度下降法进行训练的优化器(学习率)
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]))
1.数据集准备
2.计算损失值
3.定义优化器
4.使用优化器最小化损失值----这就是训练op
5.定义训练循环次数,运行训练操作