变量也是一种OP 是一种特殊的张量 能够进行存储持久化 它的
值就是张量 默认被训练
tf.Variable(initial_value None,name None) 创建一个带值initial_value的新变量 assign(value)为变量分配一个新值,返回新值 eval(session None)计算并返回此变量的值 name属性表示变量名字 tf.global_variables_initializer() 添加一个初始化所有变量的op 并在会话中开启
举例
# 变量op # 1.变量op能够持久化保存 普通张量op是不可行的 # 2.当定义一个变量op的时候 一定要在会话当中去运行初始化 a tf.constant([1,2,3,4,5]) var tf.Variable(tf.random_normal([2,3],mean 0.0,stddev 1.0)) print(a,var) # 必须做一步显示的初始化op # 添加一个初始化所有变量的op init_op tf.global_variables_initializer() with tf.Session() as sess: # 必须运行初始化op sess.run(init_op) print(sess.run([a,var]))2 可视化学习tensorboard
数据序列化-events文件 TensorBoard 通过读取 TensorFlow 的事件文件来运行 tf.summary.FileWriter( /tmp/tensorflow/summary/test/ , graph default_graph) 返回filewriter,写入事件文件到指定目录(最好用绝对路径) 以提供给tensorboard使用 tensorboard --logdir /tmp/tensorflow/summary/test/ 一般浏览器打开为127.0.0.1:6006或http://localhost:6006/
符号意义
目的 观察模型的参数、损失值等变量值的变化
1、收集变量 tf.summary.scalar(name ’’,tensor) 收集对于损失函数和准确率 等单值变量,name为变量的名字 tensor为值 tf.summary.histogram(name ‘’,tensor) 收集高维度的变量参数 tf.summary.image(name ‘’,tensor) 收集输入的图片张量能显示图片 2、合并变量写入事件文件 merged tf.summary.merge_all() 运行合并 summary sess.run(merged) 每次迭代都需运行 添加 FileWriter.add_summary(summary,i),i表示第几次的值4 tensorflow实现线性回归
前提引入tensorflow运算API
矩阵运算 tf.matmul(x, w) tf.square(error) tf.reduce_mean(error)
梯度下降API
tf.train.GradientDescentOptimizer(learning_rate) 梯度下降优化 learning_rate:学习率 一般为 method: return:梯度下降op
举例步骤
准备好特征值和目标值 y x*0.7 0.8 建立模型 {随机初始化准备一个权重w 一个偏置b} y_predict x w b 求损失函数 误差梯度下降去优化损失过程代码实现
import os os.environ[ TF_CPP_MIN_LOG_LEVEL ] 2 import tensorflow as tf def myregression(): 自我实现一个线性回归预测 # 1.准备数据 x 特征值 [100,10] y 目标值[100] x tf.random_normal([100,1],mean 1.75,stddev 0.5,name x_data ) # 矩阵相乘必须是二维的 y_ture tf.matmul(x,[[0.7]]) 0.8 # 2.建立线性回归模型 1个特征 1个权重 1个偏置 y x w b # 随机给一个权重和偏置的值(两个均为变量) 让他去计算损失 然后再当前状态下优化 # 用变量定义才能优化 weight tf.Variable(tf.random_normal([1,1],mean 0.0,stddev 1.0,name w )) bias tf.Variable(0.0,name b ) y_predict tf.matmul(x,weight) bias # 3.建立损失函数 均方误差 loss tf.reduce_mean(tf.square(y_ture-y_predict)) # 4.梯度下降 优化损失,learning_rate:0~1,2,3,5,7,10 train_op tf.train.GradientDescentOptimizer(0.1).minimize(loss) # 定义一个初始化变量op init_op tf.global_variables_initializer() # 通过会话运行程序 with tf.Session() as sess: # 初始化变量 sess.run(init_op) # 打印随机最先初始化的权重和偏置 print( 随机最先初始化权重 %f,偏置为 %f, % (weight.eval(),bias.eval())) # 循环训练 运行优化 # 运行优化 for i in range(300): sess.run(train_op) print( 第%d词优化的参数权重 %f,偏置为 %f, % (i,weight.eval(), bias.eval()))



