当前位置: 首页 > news >正文

单变量线性回归tensorflow版

TensorFlow1:

%matplotlib inline

import matplotlib.pyplot as plt

import numpy as np

import tensorflow as tf

np.random.seed(5)

x_data = np.linspace(-1,1,100)

#help(np.random.randn)

#print(np.random.randn(*x_data.shape))

#np.random.randn(*x_data.shape) *0.4

#y_data = 2*x_data+1+np.random.randn(*x_data.shape) *0.4

#plt.scatter(x_data,y_data)

#plt.plot(x_data,2*x_data+1,color='red',linewidth=3)

x = tf.compat.v1.placeholder(tf.float32,name='x')

y = tf.compat.v1.placeholder(tf.float32,name='y')

def model(x,w,b):

return tf.multiply(x,w)+b

w = tf.Variable(1.0,name='w0')

b = tf.Variable(0.0,name='b0')

pred = model(x,w,b)

train_epochs = 10

learning_rate = 0.05

loss_function = tf.reduce_mean(tf.square(y-pred))

optimizer = tf.compat.v1.train.GradientDescentOptimizer(learning_rate).minimize(loss_function)

sess = tf.compat.v1.Session()

init = tf.compat.v1.global_variables_initializer()

sess.run(init)

for epoch in range(3):

for xs,ys in zip(x_data,y_data):

_,loss = sess.run([optimizer,loss_function],feed_dict={x:xs,y:ys})

b0temp = b.eval(session=sess)

w0temp = w.eval(session=sess)

plt.plot(x_data,w0temp*x_data+b0temp)

print("w:",sess.run(w))

print("b:",sess.run(b))

TensorFlow2:

import tensorflow as tf

import numpy as np

import matplotlib.pyplot as plt

%matplotlib inline

print(tf.__version__)

x_data = np.linspace(-1,1,100)

y_data = 2 * x_data + 1 +np.random.randn(*x_data.shape) * 0.4

w = tf.Variable(1.0,tf.float32)

b = tf.Variable(0.0,tf.float32)

def model(x,w,b):

return tf.multiply(w,x) + b

def loss(x,w,b,y):

pred = model(x,w,b)

square = tf.square(pred-y)

return tf.reduce_mean(square)

def grad(x,w,b,y):

with tf.GradientTape() as tape:

loss_ = loss(x,w,b,y)

return tape.gradient(loss_,[w,b])

step = 0

loss_list = []

disply_step = 10

training_epochs = 10

learning_rate = 0.05

#BGD

for epochs in range(training_epochs):

loss_ = loss(x_data,w,b,y_data)

loss_list.append(loss_)

print(loss_.numpy())

delta_w,delta_b = grad(xs,w,b,ys)

change_w = delta_w * learning_rate

change_b = delta_b * learning_rate

w.assign_sub(change_w)

b.assign_sub(change_b)

step+=1

if step % disply_step == 0:

print(step,"--->",loss_)

#SGD

#for epochs in range(training_epochs):

#for xs,ys in zip(x_data,y_data):

#loss_ = loss(xs,w,b,ys)

#loss_list.append(loss_)

#delta_w,delta_b = grad(xs,w,b,ys)

#change_w = delta_w * learning_rate

#change_b = delta_b * learning_rate

#w.assign_sub(change_w)

#b.assign_sub(change_b)

#step+=1

#if step % disply_step == 0:

#print(step,"--->",loss_)

print("w",w.numpy())

print("b",b.numpy())

#plt.plot(x_data,x_data*w.numpy() + b.numpy())

plt.plot(loss_list)

http://www.jsqmd.com/news/22629/

相关文章:

  • Spark计算引擎
  • 【轨物方案】变频器物联网软硬件一站式解决方案 - 详解
  • 人工智能初了解
  • 173天隧道技术篇防火墙组策略ICMPDNSSMB协议出网判断C2上线解决方案
  • Hbase分布式数据库
  • 软考六
  • MapReduce并行计算框架
  • 应用安全 ---
  • 实用指南:3DGS 如何理解它?
  • HDFS文件系统
  • Java 类加载器
  • 面试总被追问k8s调度器工作原理, 收藏 == 学废
  • 题解:十二重计数法
  • Wyn 商业智能软件:3D 可视化大屏搭建与设备利用全指南
  • 什么是Java Lambda
  • Java 代理
  • 《算法与数据结构》第七章[算法2]:广度优先搜索(BFS) - 指南
  • 中转API为什么比官方更便宜?AI中转站成本揭秘
  • Java 混合编程
  • Java 语法糖
  • JAVA RMI编程
  • 大资料毕业设计选题推荐-基于大数据的全球产品库存数据分析与可视化系统-大材料-Spark-Hadoop-Bigdata
  • 纸笔群群友命题乱做
  • 本人对KMP如何匹配到所有结果的算法存在一些疑惑...
  • 字符与Java国际化编程
  • Ubuntu 系统 /dev/sdb2(RAID 关联磁盘)挂载操作手册
  • 2025 年 10 月厨房排烟、厨房排烟罩、厨房排烟系统厂家最新推荐,资质、案例、售后三维测评与选购指南
  • 解决 Windows 下 Claude 通过 cmd/powershell 运行出错失去响应的问题
  • # Ubuntu 根目录空间扩展操作手册(基于 RAID 关联磁盘 /dev/sdb2)
  • 013的加密世界权威指南_第二部分