基础
* 神经网络的四个步骤
1. 计算图
* Tensorflow是通过计算图来表达计算的编程系统
- Tensor:是多为数组的概念,张量
- Flow:计算模型
* 构建图
- 构建图的第一步, 是创建源 op (source op).
- 使用默认图,op为其增加节点
* 在一个session中启动图
- 构造阶段完成后, 才能启动图. 启动图的第一步是创建一个Session 对象, 如果无任何创建参数, 会话构造器 将启动默认图.
2. 会话
- 会话执行定义好的运算。会话拥有并管理Tensoflow的所有资源
3. 变量
* Tensorflow中变量的作用就是保存和更新神经网络的参数
4. feed和fetch可以为任意操作赋值或者获取数据
- ferch:需要获取的多个 tensor 值,在 op 的一次运行中一起获得
- feed 机制, 该机制 可以临时替代图中的任意操作中的 tensor 可以对图中任何操作提交补丁, 直接插入一个 tensor.
- 先使用tf.placeholder()标记
基础程序
1. 启动图
#!/usr/bin/python2.7
# -*- coding: UTF-8 -*-
##############################################
import tensorflow as tf
# 创建常量op
m1=tf.constant([[3,3]])
m2=tf.constant([[2],[3]])
# 创建矩阵乘法op
product=tf.matmul(m1,m2)
# 启动会话
"""
#!/usr/bin/python2.7
# -*- coding: UTF-8 -*-
sess=tf.Session() #启动默认图
result=sess.run(product) # 出发执行
print result
sess.close()
"""
# with操作对话
with tf.Session() as sess:
result=sess.run([product])
print result
2. 变量
2.1 变量定义
#!/usr/bin/python2.7
# -*- coding: UTF-8 -*-
import tensorflow as tf
x=tf.Variable([1,2])
a=tf.constant([3,3])
sub=tf.subtract(x,a)
add=tf.add(x,sub)
# 变量需要初始化
init=tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init) # 变量的初始化
print(sess.run(sub))
print(sess.run(add))
2.2 变量循环
#!/usr/bin/python2.7
# -*- coding: UTF-8 -*-
##############################################
import tensorflow as tf
# 创建一个变量初始化死0
state=tf.Variable(0,name='counter')
new_value=tf.add(state,1)
update= tf.assign(state,new_value) # 赋值op
# 变量的初始化
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))
3. fetch 和 feed
3.1 fetch
- 在session中同时运行多个op
#!/usr/bin/python2.7
# -*- coding: UTF-8 -*-
##############################################
import tensorflow as tf
input1 = tf.constant(3.0)
input2 = tf.constant(2.0)
input3 = tf.constant(5.0)
add=tf.add(input2,input3)
mu1=tf.multiply(input1,add)
with tf.Session() as sess:
result=sess.run([mu1,add])
print(result)
3.2 feed
- 在运行的时候传入值
- 使用字典的形式
import tensorflow as tf
# 创建占位符
input1=tf.placeholder(tf.float32)
input2=tf.placeholder(tf.float32)
output=tf.multiply(input1,input2)
# feed数据以字典形式传入
with tf.Session() as sess:
print(sess.run(output,feed_dict={input1:[7.0],input2:[2.0]}))
4. tensorflow的例子:线性模型的模拟
#!/usr/bin/python2.7
# -*- coding: UTF-8 -*-
##############################################
import tensorflow as tf
import numpy as np
#使用np生成100个随机点
x_data=np.random.rand(100)
y_data=x_data*01.+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: #每20次打印一次
print(step,sess.run([k,b]))