python 实现一个简单的线性回归案例
作者:雾霾王者 发布时间:2023-05-08 23:40:25
标签:python,线性回归
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File : 自实现一个线性回归.py
# @Author: 赵路仓
# @Date : 2020/4/12
# @Desc :
# @Contact : 398333404@qq.com
import os
import tensorflow as tf
def linear_regression():
"""
自实现一个线性回归
:return:
"""
# 命名空间
with tf.variable_scope("prepared_data"):
# 准备数据
x = tf.random_normal(shape=[100, 1], name="Feature")
y_true = tf.matmul(x, [[0.08]]) + 0.7
# x = tf.constant([[1.0], [2.0], [3.0]])
# y_true = tf.constant([[0.78], [0.86], [0.94]])
with tf.variable_scope("create_model"):
# 2.构造函数
# 定义模型变量参数
weights = tf.Variable(initial_value=tf.random_normal(shape=[1, 1], name="Weights"))
bias = tf.Variable(initial_value=tf.random_normal(shape=[1, 1], name="Bias"))
y_predit = tf.matmul(x, weights) + bias
with tf.variable_scope("loss_function"):
# 3.构造损失函数
error = tf.reduce_mean(tf.square(y_predit - y_true))
with tf.variable_scope("optimizer"):
# 4.优化损失
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(error)
# 收集变量
tf.summary.scalar("error", error)
tf.summary.histogram("weights", weights)
tf.summary.histogram("bias", bias)
# 合并变量
merged = tf.summary.merge_all()
# 创建saver对象
saver = tf.train.Saver()
# 显式的初始化变量
init = tf.global_variables_initializer()
# 开启会话
with tf.Session() as sess:
# 初始化变量
sess.run(init)
# 创建事件文件
file_writer = tf.summary.FileWriter("E:/tmp/linear", graph=sess.graph)
# print(x.eval())
# print(y_true.eval())
# 查看初始化变量模型参数之后的值
print("训练前模型参数为:权重%f,偏置%f" % (weights.eval(), bias.eval()))
# 开始训练
for i in range(1000):
sess.run(optimizer)
print("第%d次参数为:权重%f,偏置%f,损失%f" % (i + 1, weights.eval(), bias.eval(), error.eval()))
# 运行合并变量操作
summary = sess.run(merged)
# 将每次迭代后的变量写入事件
file_writer.add_summary(summary, i)
# 保存模型
if i == 999:
saver.save(sess, "./tmp/model/my_linear.ckpt")
# # 加载模型
# if os.path.exists("./tmp/model/checkpoint"):
# saver.restore(sess, "./tmp/model/my_linear.ckpt")
print("参数为:权重%f,偏置%f,损失%f" % (weights.eval(), bias.eval(), error.eval()))
pre = [[0.5]]
prediction = tf.matmul(pre, weights) + bias
sess.run(prediction)
print(prediction.eval())
return None
if __name__ == "__main__":
linear_regression()
来源:https://www.cnblogs.com/zlc364624/p/12686695.html


猜你喜欢
- 安装保证你的用户有权限 安装 没有 切换 rootsu root (su的意思:swich user)# rpm -ivh http://d
- 你是一位交互设计师吗?告诉我,你具体做些什么?我是做网站设计的?听起来不够专业。我是做网页设计的,听起来……你们是做界面的……恩,好吧,我勉
- 引用计数Python 语言默认采用的垃圾收集机制是『引用计数法 Reference Counting』,该算法最早 George E. Co
- 有时候需要一次性将SQL Server中的数据导出给其他部门的也许进行关联或分析,这种需求对于SSIS
- uni-simple-router专为uniapp打造的路由器,和uniapp深度集成通配小程序、App和H5端H5能完全使用vue-rou
- 弹性管理 ECS 实例获取 RAM 子账号 AK 密钥使用API管理ECS实例,您需要能访问ECS资源的API密钥(AccessKey ID
- 在使用一些 Javascript 框架时,或许会看到类似的代码var MyClass = new Class({initialize: fu
- tensorFlow中主要包括了三种不同的并行策略,其分别是数据并行、模型并行、模型计算流水线并行,具体参考Tenssorflow白皮书,在
- 本文实例讲述了Python实现阿拉伯数字和罗马数字的互相转换功能。分享给大家供大家参考,具体如下:前面一篇介绍了《Java实现的求解经典罗马
- 如下所示:import sysfrom PyQt5 import QtGui, QtCore, QtWidgetsfrom PyQt5.Qt
- 上一篇博文,我们已经顺利的从cnodejs.org请求到了数据,但是大家可以注意到我们的/src/api/index.js的第一句就是://
- 一、修改 sonar 配置 conf/sonar.properties修改 sonar 配置文件 conf/sonar.properties
- 可变参数顾名思义,函数的可变参数是传入的参数可以变化的,1个,2个到任意个。当然可以将这些 参数封装成一个 list 或者 tuple 传入
- 【译者的话】我们曾经在《透视色轮》一文中探讨过色轮的构成及作用,但你可能更多的只是将其作为了解颜色关系的一个工具,却不一定将其作为实际设计中
- i前端:nput_test.html<!DOCTYPE html><html><head lang="
- 除了使用pycharm外,还可使用vscode来操作pyqt,方法如下:1. 在vscode中配置相关的pyqt的相关根据自己实际情况修改第
- Linux默认python命令指向的是/usr/bin下的python,这个python指向同目录下python2,以及pip默认也是pyt
- 项目中需要FusionCharts图表显示双Y轴,好像FCF_MSLine.swf不可以这样,只能显示一个Y轴,多条线, 找了一下,用MSC
- 在Linux上有个常用的命令 curl(非常好用),支持curl的就是大名鼎鼎的libcurl库;libcurl是功能强大的,而且是非常高效
- 需求 Oracle调用第三方外部程序。Oracle使用sqluldr2快速导出大批量数据,然后用winrar压缩后发送邮件。源码 java