内容:包含tensorflow变量作用域、tensorboard收集、模型保存与加载、自定义命令行参数

1、知识点

"""
1、训练过程:
1、准备好特征和目标值
2、建立模型,随机初始化权重和偏置; 模型的参数必须要使用变量
3、求损失函数,误差为均方误差
4、梯度下降去优化损失过程,指定学习率 2、Tensorflow运算API:
1、矩阵运算:tf.matmul(x,w)
2、平方:tf.square(error)
3、均值:tf.reduce_mean(error)
4、梯度下降API: tf.train.tf.train.GradientDescentOptimizer(learning_rate)
learning_rate:学习率
minimize(lose):优化最小损失
return:梯度下降op
3、注意项:
1、tf.Variable()中的trainable表示为变量在训练过程可变
2、学习率设置很大时,可能会出现权重和偏置为NAN,这种现象表现叫梯度爆炸
解决方法:1、重新设计网络 2、调整学习率 3、使用梯度截断 4、使用激活函数 4、变量作用域:主要用于tensorboard查看,同时使代码更加清晰 with tf.variable_scope("data"): 5、添加权重、参数、损失值等在tensoroard观察的情况:
1、收集tensor变量 tf.summary.scalar('losses', loss)、tf.summary.histogram('weight',weight)
2、合并变量并写入事件文件:merged = tf.summary.merge_all()
3、运行合并的tensor:summary = sess.run(merged)、fileWriter.add_summary(summary,i) 6、模型保存与加载: tf.train.Saver(var_list=None,max_to_keep=5)
var_list:指定将要保存和还原的变量。它可以作为一个dict或一个列表传递.
max_to_keep:指示要保留的最近检查点文件的最大数量。
创建新文件时,会删除较旧的文件。如果无或0,则保留所有
检查点文件。默认为5(即保留最新的5个检查点文件。
a)例如:saver.save(sess, '/tmp/ckpt/test/model')
saver.restore(sess, '/tmp/ckpt/test/model')
保存文件格式:checkpoint文件 b)模型加载:
if os.path.exists('./ckpt/checkpoint'):
saver.restore(sess,'./ckpt/model') 7、自定义命令行参数:
1、首先定义有哪些参数需要在运行时候指定
2、程序当中获取定义命令行参数
3、运行 python *.py --max_step=500 --model_dir='./ckpt/model'
本例执行命令:python tensorflow实现线性回归.py --max_step=50 --model_dir="./ckpt/model" """

2、代码

# coding = utf-8
import tensorflow as tf
import os #自定义命令行参数
tf.app.flags.DEFINE_integer("max_step",100,"模型训练的步数")
tf.app.flags.DEFINE_string("model_dir"," ","模型文件加载路径")
#定义获取命令行参数名字
FLAGS = tf.app.flags.FLAGS
def myLinear():
"""
自实现一个线性回归预测
:return:
"""
#定义作用域
with tf.variable_scope("data"):
#1、准备数据,特征值
x = tf.random_normal([100,1],mean=1.75,stddev=0.5)
#目标值。矩阵相乘,必须是二维的
y_true = tf.matmul(x,[[0.7]])+0.8 with tf.variable_scope("model"):
#2、建立线性模型 y = wx+b ,随机给定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 with tf.variable_scope("loss"):
#3、建立损失函数,均方误差
loss = tf.reduce_mean(tf.square(y_true-y_predict))
with tf.variable_scope("optimizer"):
#4、梯度下降优化损失
train_op = tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(loss) ##############模型保存################
with tf.variable_scope("save_model"):
saver = tf.train.Saver(); # 初始化变量
init_op = tf.global_variables_initializer()
####################收集变量#########################
# 收集tensor变量
tf.summary.scalar('losses', loss)
tf.summary.histogram('weight',weight) #合并变量并写入事件文件
merged = tf.summary.merge_all()
#通过会话运行程序
with tf.Session() as sess:
#必须要运行初始化变量
sess.run(init_op) #打印随机最先初始化的权重和偏置
print("随机初始化的参数权重为:%f,偏置为:%f" % (weight.eval(),bias.eval()))
# 建立事件文件
fileWriter = tf.summary.FileWriter("./tmp", graph=sess.graph) ###########加载模型,覆盖之前的参数##############
if os.path.exists('./ckpt/checkpoint'):
#saver.restore(sess,'./ckpt/model')
saver.restore(sess, FLAGS.model_dir) #循环优化
for i in range(FLAGS.max_step):
#运行优化
sess.run(train_op)
#运行合并的tensor
summary = sess.run(merged)
fileWriter.add_summary(summary,i)
print("第%d次优化参数权重为:%f,偏置为:%f" % (i,weight.eval(), bias.eval()))
################模型保存##############
# if i%1000==0:
# #saver.save(sess,'./ckpt/model')
# saver.save(sess,FLAGS.model_dir)
saver.save(sess, FLAGS.model_dir)
return None if __name__ == '__main__':
myLinear()

tensorflow实现线性回归、以及模型保存与加载的更多相关文章

  1. tensorflow 模型保存与加载 和TensorFlow serving + grpc + docker项目部署

    TensorFlow 模型保存与加载 TensorFlow中总共有两种保存和加载模型的方法.第一种是利用 tf.train.Saver() 来保存,第二种就是利用 SavedModel 来保存模型,接 ...

  2. sklearn模型保存与加载

    sklearn模型保存与加载 sklearn模型的保存和加载API 线性回归的模型保存加载案例 保存模型 sklearn模型的保存和加载API from sklearn.externals impor ...

  3. [PyTorch 学习笔记] 7.1 模型保存与加载

    本章代码: https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson7/model_save.py https://githu ...

  4. 转 tensorflow模型保存 与 加载

    使用tensorflow过程中,训练结束后我们需要用到模型文件.有时候,我们可能也需要用到别人训练好的模型,并在这个基础上再次训练.这时候我们需要掌握如何操作这些模型数据.看完本文,相信你一定会有收获 ...

  5. TensorFlow构建卷积神经网络/模型保存与加载/正则化

    TensorFlow 官方文档:https://www.tensorflow.org/api_guides/python/math_ops # Arithmetic Operators import ...

  6. Tensorflow模型保存与加载

    在使用Tensorflow时,我们经常要将以训练好的模型保存到本地或者使用别人已训练好的模型,因此,作此笔记记录下来. TensorFlow通过tf.train.Saver类实现神经网络模型的保存和提 ...

  7. TensorFlow的模型保存与加载

    import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' import tensorflow as tf #tensorboard --logdir=&qu ...

  8. tensorflow 之模型的保存与加载(一)

    怎样让通过训练的神经网络模型得以复用? 本文先介绍简单的模型保存与加载的方法,后续文章再慢慢深入解读. #!/usr/bin/env python3 #-*- coding:utf-8 -*- ### ...

  9. TensorFlow保存、加载模型参数 | 原理描述及踩坑经验总结

    写在前面 我之前使用的LSTM计算单元是根据其前向传播的计算公式手动实现的,这两天想要和TensorFlow自带的tf.nn.rnn_cell.BasicLSTMCell()比较一下,看看哪个训练速度 ...

随机推荐

  1. 《python解释器源码剖析》第7章--python中的set对象

    7.0 序 集合和字典一样,都是性能非常高效的数据结构,性能高效的原因就在于底层使用了哈希表.因此集合和字典的原理本质上是一样的,都是把值映射成索引,通过索引去查找. 7.1 PySetObject ...

  2. 超简单!教你如何修改源列表(sources.list)来提高软件访问速度

    因为Ubuntu官方的源地址不在国内,所以在国内的访问速度非常慢,比如:我们要下载或是更新软件那速度比蜗牛还慢.所以,我们需要改成国内的镜像服务器,这样,我们在下载或更新软件的时候就会很快了. 配置步 ...

  3. 分布式之Zookeeper一(分布式锁与Zookeeper集群)

    说到分布式开发,不得不说的就是zookeeper了:zookeeper官网说到Apache ZooKeeper致力于开发和维护可实现高度可靠的分布式协调的开源服务器.那么zk作为一个协调者的存在,是分 ...

  4. web开发中的支付宝支付和微信支付

    https://www.jianshu.com/p/155757d2b9eb <!-- wxPay --SDK--> <script src="https://res.wx ...

  5. mysql-mmm实现高可用和部署时须要考虑的问题

    mysql-mmm简介 Multi-Master Replication Manager for MySQL,简称mmm,官方的介绍可以参考mmm官网.好处自然不用说,读写分离,官方称读能做到负载均衡 ...

  6. Android异常与性能优化相关面试问题-ANR异常面试问题详解

    什么是ANR? Application Not Responding 造成ANR的主要原因: 应用程序的响应性是由ActivityManager和WindowManager系统服务监视的,当监视到在A ...

  7. windows10家庭版远程桌面连接报错:CredSSP加密oracle修正

    转 原地址:https://www.cnblogs.com/lindajia/p/9021082.html Windows10远程桌面连接 报错信息 : 网上找到方法 但是奈何是 "Win1 ...

  8. 我遇到的Echarts 最大值不显示&平均值不正常

    用Echarts做图表的时候,遇到最大值不显示和平均值不正常的问题,如图: 找了半天,原来是X轴6个坐标有7个数据,只是最后那个数据没有显示出来,而且还是最大的,无语. 加上第七个坐标之后,就显示正常 ...

  9. .Net界面开发必备!DevExpress Blazor UI全新组件助力界面开发

    行业领先的.NET界面控件DevExpress 正式发布了v19.1版本,DevExpress UI for Blazor/ Razor组件附带7个用户界面组件(包括Data Grid和Pivot G ...

  10. Oracle之:Function :getcurrdate()

    getdate()函数连接请戳这里 create or replace function getcurrdate(i_date date) return date is v_date date; v_ ...