tensorflow2.0 学习(二)
线性回归问题
# encoding: utf-8 import numpy as np
import matplotlib.pyplot as plt data = []
for i in range(100):
x = np.random.uniform(-10., 10.) #均匀分布产生x
eps = np.random.normal(0., 0.01) #高斯分布产生一个误差值
y = 1.477*x + 0.089 +eps #计算得到y值
data.append([x, y]) #保存到data中 data = np.array(data) #转成数组的方式方便处理
plt.plot(data[:,0], data[:,1], 'b') #自己引入用于观察原始数据
#plt.show()
plt.savefig('original data.png') def mse(b, w, points): #计算所有点的预测值和真实值之间的均方误差
totalError = 0
for i in range(0, len(points)):
x = points[i, 0]
y = points[i, 1]
totalError += (y -(w*x + b))**2 #真实值减预测值的平方
return totalError/float(len(points)) #返回平均误差值 def step_gradient(b_current, w_current, points, lr): #预测模型中梯度下降方式优化b和w
b_gradient = 0
w_gradient = 0
M = float(len(points))
for i in range(0, len(points)):
x = points[i, 0]
y = points[i, 1]
b_gradient += (2/M) * ((w_current*x + b_current) - y) #求偏导数的公式可知
w_gradient += (2/M)*x*((w_current*x + b_current) - y) #求偏导数的公式可知
new_b = b_current - (lr*b_gradient) #更新参数,使用了梯度下降法
new_w = w_current - (lr*w_gradient) #更新参数,使用了梯度下降法
return [new_b, new_w] def gradient_descent(points, starting_b, starting_w, lr, num_iterations): #循环更新w,b多次
b = starting_b
w = starting_w
loss_data = []
for step in range(num_iterations): #计算并更新一次
b, w = step_gradient(b, w, np.array(points), lr) #更新了这一次的b,w
loss = mse(b, w, points)
loss_data.append([step+1, loss])
if step % 50 == 0: #每50次输出一回
print(f"iteration:{step}, loss{loss}, w:{w}, b:{b}")
return [b, w, loss_data] def main():
lr = 0.01 #学习率,梯度下降算法中的参数
initial_b = 0 #初值
initial_w = 0
num_iterations = 1000 #学习100轮
[b, w, loss_data] = gradient_descent(data, initial_b, initial_w, lr, num_iterations)
loss = mse(b, w, data)
print(f'Final loss:{loss}, w:{w}, b:{b}') plt.figure() #观察loss每一步情况
loss_data = np.array(loss_data)
plt.plot(loss_data[:,0], loss_data[:,1], 'g')
plt.savefig('loss.png')
#plt.show() plt.figure() #观察最终的拟合效果
y_fin = w*data[:,0] + b + eps
plt.plot(data[:,0], y_fin, 'r')
#plt.show()
plt.savefig('final data.png') if __name__ == '__main__':
main()
original data (y = w*x + b +eps)

loss rate

final data (y' = w' *x + b' + eps )

最终loss趋近9.17*10^-5, w趋近1.4768, b趋近0.0900
真实的w值1.477, b为0.089
对于线性回归问题,适用性挺好!
主要的数学代码能理解,唯有取梯度的反方向更新参数,不是很能理解!

这里还没有用到tensorflow,下一次更新基础知识!
tensorflow2.0 学习(二)的更多相关文章
- tensorflow2.0 学习(三)
用tensorflow2.0 版回顾了一下mnist的学习 代码如下,感觉这个版本下的mnist学习更简洁,更方便 关于tensorflow的基础知识,这里就不更新了,用到什么就到网上取搜索相关的知识 ...
- tensorflow2.0 学习(一)
虽说是按<TensorFlow深度学习>这本书来学习的,但是总会碰到新的问题!记录下这些问题,有利于巩固知新. 之前学过一些tensorflow1.0的知识,到RNN这章节,后面没有再继续 ...
- Tensorflow2.0学习(一)
站长资讯平台:今天学习一下Tensorflow2.0 的基础 核心库,@tf.function ,可以方便的将动态图的语言,变成静态图,在某种程度上进行计算加速 TensorFlow Lite Ten ...
- tensorflow2.0学习笔记
今天我们开始学习tensorflow2.0,用一种简单和循循渐进的方式,带领大家亲身体验深度学习.学习的目录如下图所示: 1.简单的神经网络学习过程 1.1张量生成 1.2常用函数 1.3鸢尾花数据读 ...
- TensorFlow2.0(二):数学运算
1 基本运算:加(+).减(-).点乘(*).除(/).地板除法(//).取余(%) 基本运算中所有实例都以下面的张量a.b为例进行: >>> a = tf.random.unifo ...
- tensorflow2.0学习笔记第一章第二节
1.2常用函数 本节目标:掌握在建立和操作神经网络过程中常用的函数 # 常用函数 import tensorflow as tf import numpy as np # 强制Tensor的数据类型转 ...
- tensorflow2.0学习笔记第二章第四节
2.4损失函数损失函数(loss):预测值(y)与已知答案(y_)的差距 nn优化目标:loss最小->-mse -自定义 -ce(cross entropy)均方误差mse:MSE(y_,y) ...
- tensorflow2.0学习笔记第二章第一节
2.1预备知识 # 条件判断tf.where(条件语句,真返回A,假返回B) import tensorflow as tf a = tf.constant([1,2,3,1,1]) b = tf.c ...
- tensorflow2.0学习笔记第一章第一节
一.简单的神经网络实现过程 1.1张量的生成 # 创建一个张量 #tf.constant(张量内容,dtpye=数据类型(可选)) import tensorflow as tf import num ...
随机推荐
- 2019-6-28笔记总结-编程语言发展史和python安装
一.编程语言的发展史 1.机器语言(就是010101的二进制数,直接用二进制跟计算机直接沟通交流,直接操作硬件) 优点:计算机能够直接读懂,速度快 缺点:开发效率极低 2.汇编语言(用简单的英文标签来 ...
- expect——通过编写自动化脚本实现信息交互(整理)
本文简要介绍了expect工具语言的功能.用法,并以实例来具体说明 expect是什么 Expect是一个免费的编程工具语言,用来完成通信过程中的交互式任务,而无需人的干预. 通过shell虽然可以实 ...
- 手把手教你做JavaWeb项目:登录模块
现如今,无论是客户端还是移动端,无论是游戏登陆还是社交平台登陆,无处不在的“登陆”.那么你知道怎么制作吗?今天就为你娓娓道来: 用户登录 在各大信息管理系统中,登录功能是必不可少的,他的作用就是验证用 ...
- php GD 和图像处理函数, 制作一张图片
php GD 和图像处理函数, 制作一张图片 // GD 和图像处理函数 // https://www.php.net/manual/zh/ref.image.php // https://www.p ...
- 详解java动态代理机制以及使用场景
详解java动态代理机制以及使用场景 https://blog.csdn.net/u011784767/article/details/78281384 深入理解java动态代理的实现机制 https ...
- Python进阶----异常处理
Python进阶----异常处理 一丶错误和异常 错误: 语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) #语法错误示范一 if #语法错误示范二 ...
- permission
import 'package:flutter/material.dart'; import 'dart:io'; import 'dart:async'; import 'package:rxdar ...
- Android EventBus使用大全
添加依赖 implementation 'org.greenrobot:eventbus:3.1.1' public class HuaDongActivity extends Activity { ...
- 归并排序python实现源码
将开发过程经常用到的一些代码片段收藏起来,下面的资料是关于归并排序python实现的代码,应该能对码农们有一些用. def mergesort(arr): if len(arr) == 1: retu ...
- iOS完整学习路线
来源:http://www.cnblogs.com/mjios/p/3226954.html