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