天天看点

Tensorflow 基础架构

Tensorflow 基础架构

代码参考GitHub [Tensorflow学习 ]

代码参考GitHub [Tensorflow-Examples ]

1.处理结构

(1)Tensorflow 首先要定义神经网络的结构,然后再把数据放入结构当中去train

(2)TensorFlow是采用数据流图(data flow graphs)来计算,首先我们得创建一个数据流流图,然后再将我们的数据(数据以张量(tensor)的形式存在)放在数据流图中计算

(3张量(tensor):张量有多种. 零阶张量:为纯量或标量 (scalar) 也就是一个数值. 比如 1.一阶张量:为 向量 (vector), 比如 一维的 [1, 2, 3].二阶张量:为矩阵 (matrix), 比如 二维的 [[1, 2, 3],[4, 5, 6],[7, 8, 9]].以此类推, 还有 三阶 三维的 …

2 .一个例子

我们想求方程: y = 3*x + 10 , 最后看我们的weight多么接近3.0 和 bias 多么接近10.0

定义函数:

x_data = np.random.rand().astype(np.float32)  #表示随机生成100个随机的浮点数                     
y_data = x_data*+
           

创建Tensorflow 结构:

Weights = tf.Variable(tf.random_uniform([], -, )) # 创建变量Weight是,范围是 -1.0~1.0
  biases = tf.Variable(tf.zeros([]))                      # 创建偏置,初始值为0
  y = Weights*x_data+biases                                # 定义方程
  loss = tf.reduce_mean(tf.square(y-y_data))               # 定义损失,为真实值减去我们每一步计算的值
  optimizer = tf.train.GradientDescentOptimizer()       # 0.5 是学习率
  train = optimizer.minimize(loss)                         # 使用梯度下降优化
  init = tf.initialize_all_variables()                     # 初始化所有变量
           

定义Session:

sess = tf.Session()
  sess.run(init)
           

输出结果:

for i in range():
   sess.run(train)
   if i% == :
       print i,sess.run(Weights),sess.run(biases)
           

3 .Session会话控制

运行 session.run() 可以获得你要得知的运算结果, 或者是你所要运算的部分

定义常量矩阵:tf.constant([[3,3]])

矩阵乘法 :tf.matmul(matrix1,matrix2)

运行Session的两种方法:

手动关闭

sess = tf.Session()
   print sess.run(product)
   sess.close()
           

使用with,执行完会自动关闭

with tf.Session() as sess:
   print sess.run(product)
           

4.Variable变量

定义变量:tf.Variable()

初始化所有变量:init = tf.initialize_all_variables()

需要再在 sess 里, sess.run(init) , 激活变量

输出时,一定要把 sess 的指针指向变量再进行 print 才能得到想要的结果

或者流程图:

5.Placeholder传入值

首先定义Placeholder,然后在Session.run()的时候输入值

placeholder 与 feed_dict={} 是绑定在一起出现的

input1 = tf.placeholder(tf.float32) #在 Tensorflow 中需要定义 placeholder 的 type ,一般为 float32 形式
input2 = tf.placeholder(tf.float32)

output = tf.mul(input1,input2)  # 乘法运算

with tf.Session() as sess:
    print sess.run(output,feed_dict={input1:,input2:}) # placeholder 与 feed_dict={} 是绑定在一起出现的
           

6.最后代码

import  tensorflow as tf
import numpy as np
import  matplotlib.pyplot as plt

x_data = np.random.rand().astype(np.float32)
y_data = x_data *  + 

Weights = tf.Variable(tf.random_uniform([], -, )) # 创建变量Weight是,范围是 -1.0~1.0
biases = tf.Variable(tf.zeros([]))                      # 创建偏置,初始值为0
y = Weights*x_data+biases                                # 定义方程
loss = tf.reduce_mean(tf.square(y-y_data))               # 定义损失,为真实值减去我们每一步计算的值
optimizer = tf.train.GradientDescentOptimizer()       # 0.5 是学习率
train = optimizer.minimize(loss)                         # 使用梯度下降优化
init = tf.global_variables_initializer()                 # 初始化所有变量

sess = tf.Session()
sess.run(init)

for i in range():
   sess.run(train)
   if i% == :
       print (i,sess.run(Weights),sess.run(biases))

           

继续阅读