环境Anaconda

废话不多说,关键看代码

import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2' tf.app.flags.DEFINE_integer("max_step", 300, "训练模型的步数")
FLAGS = tf.app.flags.FLAGS def linear_regression():
'''
自实现线性回归
:return:
'''
#1.准备100个样本 特征值X,目标值y_true with tf.variable_scope("original_data"):
#mean是平均值
#stddev代表方差
X = tf.random_normal(shape=(100,1),mean=0,stddev=1) y_true = tf.matmul(X,[[0.8]])+0.7 #2.建立线性模型:
with tf.variable_scope("linear_model"):
weigh = tf.Variable(initial_value=tf.random_normal(shape=(1,1)))
bias = tf.Variable(initial_value=tf.random_normal(shape=(1,1))) y_predict = tf.matmul(X,weigh)+bias # 3 确定损失函数
#均方误差((y-y_repdict)^2)/m = 平均每一个样本的误差
with tf.variable_scope("loss"):
error = tf.reduce_mean(tf.square(y_predict-y_true)) #4梯度下降优化损失:需要指定学习率
with tf.variable_scope("gd_optimizer"):
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(error) #收集变量
tf.summary.scalar("error",error)
tf.summary.histogram("weights",weigh)
tf.summary.histogram("bias",bias) #合并变量
merge = tf.summary.merge_all() #初始化变量
init = tf.global_variables_initializer() #创建一个saver
saver = tf.train.Saver()
#开启会话进行训练
with tf.Session() as sess:
#初始化变量op
sess.run(init)
print("随机初始化的权重为{},偏执为{}".format(weigh.eval(),bias.eval())) # print(weigh.eval(), bias.eval())
# saver.restore(sess,"./checkpoint/linearregression")
# print(weigh.eval(),bias.eval())
#创建文件事件
file_writer = tf.summary.FileWriter(logdir="./",graph=sess.graph)
#训练模型 for i in range(FLAGS.max_step):
sess.run(optimizer)
summary = sess.run(merge)
file_writer.add_summary(summary,i)
print("第{}步的误差为{},权重为{},偏执为{}".format(i,error.eval(),weigh.eval(),bias.eval()))
#checkpoint:检查点文件
#tf.keras:h5
# saver.save(sess,"./checkpoint/linearregression") if __name__ == '__main__':
linear_regression()

  部分结果输出:

第294步的误差为7.031372661003843e-06,权重为[[0.7978232]],偏执为[[0.69850117]]
第295步的误差为5.66376502320054e-06,权重为[[0.7978593]],偏执为[[0.6985256]]
第296步的误差为5.646746103593614e-06,权重为[[0.7978932]],偏执为[[0.698556]]
第297步的误差为5.33674938196782e-06,权重为[[0.7979515]],偏执为[[0.69858944]]
第298步的误差为5.233380761637818e-06,权重为[[0.79799336]],偏执为[[0.6986183]]
第299步的误差为5.024347956350539e-06,权重为[[0.7980382]],偏执为[[0.6986382]]

  

如何用TensorFlow实现线性回归的更多相关文章

  1. 深度学习入门实战(二)-用TensorFlow训练线性回归

    欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~ 作者 :董超 上一篇文章我们介绍了 MxNet 的安装,但 MxNet 有个缺点,那就是文档不太全,用起来可能 ...

  2. 一文详解如何用 TensorFlow 实现基于 LSTM 的文本分类(附源码)

    雷锋网按:本文作者陆池,原文载于作者个人博客,雷锋网已获授权. 引言 学习一段时间的tensor flow之后,想找个项目试试手,然后想起了之前在看Theano教程中的一个文本分类的实例,这个星期就用 ...

  3. 如何用Tensorflow训练模型成pb文件和和如何加载已经训练好的模型文件

    这篇薄荷主要是讲了如何用tensorflow去训练好一个模型,然后生成相应的pb文件.最后会将如何重新加载这个pb文件. 首先先放出PO主的github: https://github.com/ppp ...

  4. 从原理到代码:大牛教你如何用 TensorFlow 亲手搭建一套图像识别模块 | AI 研习社

    从原理到代码:大牛教你如何用 TensorFlow 亲手搭建一套图像识别模块 | AI 研习社 PPT链接: https://pan.baidu.com/s/1i5Jrr1N 视频链接: https: ...

  5. tensorflow实现线性回归、以及模型保存与加载

    内容:包含tensorflow变量作用域.tensorboard收集.模型保存与加载.自定义命令行参数 1.知识点 """ 1.训练过程: 1.准备好特征和目标值 2.建 ...

  6. TensorFlow简单线性回归

    TensorFlow简单线性回归 将针对波士顿房价数据集的房间数量(RM)采用简单线性回归,目标是预测在最后一列(MEDV)给出的房价. 波士顿房价数据集可从http://lib.stat.cmu.e ...

  7. 利用TensorFlow实现线性回归模型

    准备数据: import numpy as np import tensorflow as tf import matplotlib.pylot as plt # 随机生成1000个点,围绕在y=0. ...

  8. tensorflow实现线性回归总结

    1.知识点 """ 模拟一个y = 0.7x+0.8的案例 报警: 1.initialize_all_variables (from tensorflow.python. ...

  9. TensorFlow多元线性回归实现

    多元线性回归的具体实现 导入需要的所有软件包:   因为各特征的数据范围不同,需要归一化特征数据.为此定义一个归一化函数.另外,这里添加一个额外的固定输入值将权重和偏置结合起来.为此定义函数 appe ...

随机推荐

  1. java——基本数据类型

    一.整型 bite 1字节 2^0 short 2字节 2^1 int 4字节 2^2 long  8字节 2^3 整形常量默认为int型,所以定义long 型时候要在常量后面加 L 或 l ,其他类 ...

  2. Mysql 随笔记录

    Soundex 声音相似的 select * from demos where Soundex('title') = Soundex('标示'); Concat 拼接语句 select concat( ...

  3. springboot + aop + Lua分布式限流的最佳实践

    整理了一些Java方面的架构.面试资料(微服务.集群.分布式.中间件等),有需要的小伙伴可以关注公众号[程序员内点事],无套路自行领取 一.什么是限流?为什么要限流? 不知道大家有没有做过帝都的地铁, ...

  4. implements Serializable

    implements Serializable 1. 序列化和反序列化 序列化: 把对象转换为字节序列的过程称为对象的序列化. 反序列化: 把字节序列恢复为对象的过程称为对象的反序列化. 在Java和 ...

  5. 1-1. OSS/ALSA 声卡的驱动与配置和 Madplay 嵌入式播放器的移植

    报警子系统 一. OSS/ALSA 声卡的驱动与配置 声卡驱动中传统的OSS构架在02年被收购后即不开源,并且OSS的混音效果不好->因此ALSA构架孕育而生. ALSA(高级音频构架,目前应用 ...

  6. PTA | 1056 组合数的和 (15分)

    给定 N 个非 0 的个位数字,用其中任意 2 个数字都可以组合成 1 个 2 位的数字.要求所有可能组合出来的 2 位数字的和.例如给定 2.5.8,则可以组合出:25.28.52.58.82.85 ...

  7. django rest framework用户认证

    django rest framework用户认证 进入rest framework的Apiview @classmethod def as_view(cls, **initkwargs): &quo ...

  8. flask-模板使用

    flask-模板使用 模板方法: 模板中的url_for跟后台视图的url_for使用起来基本是一样的,也可以传递参数 使用方式 {{ url_for('func') }} 过滤器: 过滤器是通过管道 ...

  9. javascript 入门 之 bootstrap/bootstrap-table 安装方法

    也和select2一样,可以有三种方法 1.远程调用CDN 2.用bower安装 3.下载 时间原因,暂时先讲第二种,其余两种,以后完善 1.进入根目录,执行bower install bootstr ...

  10. Jdk 和 jre 的 关系和区别

    Jdk 和 jre 的 关系和区别 区别: JDK:是Java Development Kit 的简称–>翻译过来就是:Java 开发工具包.是程序员使用java语言编写java程序所需的开发工 ...