基础

* 神经网络的四个步骤


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]))

results matching ""

    No results matching ""