Tensorflow学习(一)--使用TensorFlow实现线性回归

TensorFlow学习笔记(二):TensorFlow实现线性回归模型 一、线性回归模型中所涉及到API#导入TensorFlow包 import tensorflow as tf #TensorFlow程序分为两个阶段:准备阶段和执行阶段 #--------------准备阶段-------------- #定义变量、定义函数、定义操作步骤等,中间隐藏着把变量转化为张量的步骤#用tf.Variable来定义变量 #注意:定义矩阵的写法([[],[],[]...]) 阅读详情

本博客仅为作者记录笔记之用,不免有很多细节不对之处。还望各位看官能够见谅,欢迎批评指正。


  最近发现自己都没有真正好好学习过TensorFlow,只是看看别人project的代码,然后能跑起来就行,实际自己想要去搭建一些网络还是很困难,因此准备写一个使用TensorFlow实现一些网络的系列。这是第一篇,因此就从最简单的线性回归开始。

  首先简单介绍一下线性回归。线性回归的表达式为:

y=wx+b

其中w为权重,b为偏移量。
  定义线性回归的损失函数:
loss=1n−1∑ni=1(y^−y)2

主要是通过梯度下降法,不断的去更新权重w,b,来最小化损失函数。

  首先我们需要导入TensorFlow、numpy以及matplotlib这三个库

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
rng = np.random

  设置模型的参数,定义学习率、模型的迭代次数以及迭代多少次计算一次模型损失

# Parameters
learning_rate = 0.01
training_epochs = 5000
display_step = 50

  定义输入数据 X , Y以及样本个数n

# Training Data
train_X = np.asarray([3.3, 4.4, 5.5, 6.71, 6.93, 4.168, 9.779, 6.182, 7.59, 2.167,
                      7.042, 10.791, 5.313, 7.997, 5.654, 9.27, 3.1])
train_Y = np.asarray([1.7, 2.76, 2.09, 3.19, 1.694, 1.573, 3.366, 2.596, 2.53, 1.221,
                      2.827, 3.465, 1.65, 2.904, 2.42, 2.94, 1.3])
n_samples = train_X.shape[0]

  初始化模型的输入输出变量以及定义模型的权重系数和偏移量

# tf Graph Input
X = tf.placeholder(tf.float32)
Y = tf.placeholder(tf.float32)

# Set model weights
W = tf.Variable(rng.randn(), name="weight")
b = tf.Variable(rng.randn(), name="bias")

  定义线性模型,使用均方误差作为模型的训练误差。优化训练误差的方法为梯度下降

# Construct a linear model
pred = tf.add(tf.multiply(X, W), b)

# Mean squared error
cost = tf.reduce_sum(tf.pow(pred-Y, 2))/(2*n_samples)
# Gradient descent
#  Note, minimize() knows to modify W and b because Variable objects are trainable=True by default
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)

# Initialize the variables (i.e. assign their default value)
init = tf.global_variables_initializer()

  准备工作都做好之后,我们就可以开始进行训练线性模型了。

# 开始训练
with tf.Session() as sess:

    # 执行初始化操作
    sess.run(init)

    # 拟合模型数据
    for epoch in range(training_epochs):
        for (x, y) in zip(train_X, train_Y):
            sess.run(optimizer, feed_dict={X: x, Y: y})

        # 每50次迭代后在控制台输出模型当前训练的loss以及权重大小
        if (epoch+1) % display_step == 0:
            c = sess.run(cost, feed_dict={X: train_X, Y:train_Y})
            print("Epoch:", '%04d' % (epoch+1), "cost=", "{:.9f}".format(c), \
                "W=", sess.run(W), "b=", sess.run(b))

    print("Optimization Finished!")
    training_cost = sess.run(cost, feed_dict={X: train_X, Y: train_Y})
    print("Training cost=", training_cost, "W=", sess.run(W), "b=", sess.run(b), '\n')

    # 画出拟合图像
    plt.plot(train_X, train_Y, 'ro', label='Original data')
    plt.plot(train_X, sess.run(W) * train_X + sess.run(b), label='Fitted line')
    plt.legend()
    plt.show()

  得到最后的模型损失和参数值

这里写图片描述

  画出拟合直线与数据点的图如下所示:
这里写图片描述

得到模型之后,我们将模型在测试数据上进行测试。

    # 创建测试数据
    test_X = np.asarray([6.83, 4.668, 8.9, 7.91, 5.7, 8.7, 3.1, 2.1])
    test_Y = np.asarray([1.84, 2.273, 3.2, 2.831, 2.92, 3.24, 1.35, 1.03])

    print("Testing... (Mean square loss Comparison)")
    testing_cost = sess.run(
        tf.reduce_sum(tf.pow(pred - Y, 2)) / (2 * test_X.shape[0]),
        feed_dict={X: test_X, Y: test_Y})  # same function as cost above
    print("Testing cost=", testing_cost)
    print("Absolute mean square loss difference:", abs(
        training_cost - testing_cost))

    plt.plot(test_X, test_Y, 'bo', label='Testing data')
    plt.plot(train_X, sess.run(W) * train_X + sess.run(b), label='Fitted line')
    plt.legend()
    plt.show()

得到图像如下所示:

这里写图片描述

最后附上实现完整代码的GitHub仓库,欢迎各位看官star和fork~~~~

【深度学习入门】tensorflow实现线性回归例子 import tensorflow as tf import numpy import matplotlib.pyplot as plt rng = numpy.random # Parameters learning_rate = 0.01#设置梯度下降算法的学习率,一般为0~1之间比较小的值 training_epochs = 1000 #设置迭代次数 display_step = 50 #每迭代100次输出一次loss # Training Data #训练数据,生成生成样本数据train_x,t 阅读详情

相关推荐

TensorFlow入门——简单实现线性回归模型

作者:禅与计算机程序设计艺术 1.简介 1.1 关于作者 我叫雷子龙(Erlang),今年27岁,本科毕业于南京航空航天大学自动化系,从事机器学习相关工作,曾任职于某领域公司一年,目前在创新加速器数据科学部担任实习生一职,工作中主要使用Python、Tenso

AI天才研究院 1190

用TensorFlow实现线性回归(包括过程中出现的问题及解决方法)

用TensorFlow实现线性回归实验

吃鱼从来不吐刺的博客 6543

银河麒麟V10系统grub崩溃急救指南:从光盘救援到完整恢复(附常见错误排查)

本文详细介绍了银河麒麟V10系统grub崩溃的急救方法,从使用安装光盘进入救援环境到完整恢复系统的全流程。针对不同损坏程度(轻度、中度、严重)提供了分级恢复策略,包括grub2-install和grub2-mkconfig等关键命令的使用,并附有常见错误排查表,帮助用户快速解决引导问题。

weixin_30955617的博客 483

TensorFlow——实现简单的线性回归

一、线性回归原理 根据数据建立回归模型,w1x1+w2x2+…..+b = y,通过真实值与预测值之间建立误差,使用梯度下降优化得到损失最小对应的权重和偏置。最终确定模型的权重和偏置参数。最后可以用这些参数进行预测。 二、案例:实现线性回归的训练 1 .案例确定 假设随机指定100个点,只有一个特征 数据本身的分布为 y = 0.7 * x + 0.8 这里将数据分布的规...

weixin_42008209的博客 8723

【DDSCAT——离散偶极近似仿真程序04】参数理解和模型设计

在这一部分,我们开始理解DDSCAT程序设计中的一些参数问题。 承接第二部分内容中的ddscat.par文件,我们来聊一聊偶极子、实际体积、有效半径等关键词。 一、偶极子点阵 手册中说,我们需要设计模型(target/目标),它是有偶极子点阵组成的。偶极子,顾名思义,是由一对电荷组成的,但我们不用设计一对,我们设计一个点就行,...

XD_Yangf的博客 7552

利用抖音Cookie充值接口提取支付链接,调起原生微信h5支付宝h5支付

最近开始搞一些个人支付通道的开发,方便个人不用和第三方平台签约就能收款,省去很多流程手续的成本。 然后翻了一下网上并没有太多现成的技术教程,只能自己研究着搞了。 这次要分享的是利用抖音的充值接口,去分析提取出支付链接,分别包含微信原生支付的h5支付链接,和支付宝h5支付链接。 微信h5支付: 抖币充值,抖音充值,抖音直播充值官方入口 - 抖音 支付宝h5支付 抖币充值,抖音充值,抖音直播充值官方入口 - 抖音 整个开发流程思路是以下几步: 1.抓包分析抖音的充值的整个流程,提取关键的一些

Android-逆向的博客 6567

线性回归详解及Tensorflow实战

0x01 线性回归概述 线性回归()是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法 其表达形式为y = w'x+e,e为误差服从均值为0的正态分布 线性回归可能是统计学和机器学习中最著名和最容易理解的算法之一 在统计学中,线性回归是一种对标量响应和一个或多个解释变量(也称为因变量和自变量)之间的关系进行建模的线性方法 一个解释变量的情况称为简单线性回归(simple linear regression) 对于多个,这个过...

weixin_43211186的博客 1858

深度解析direct path write temp与ASM IO性能问题:Oracle 19.17视图查询优化指南

本文深度解析了Oracle 19.17版本中复杂视图查询出现`direct path write temp`与`ASM IO for non-blocking poll`性能瓶颈的根本原因。通过对比11.2.0.4版本的执行计划差异,文章提供了从CBO参数调整、存储层优化到SQL架构重构的完整实战调优指南,帮助DBA有效解决升级后的查询性能问题。

2y3u4i5o6p的博客 1100

TensorFlow实现线性回归

线性回归实现整体流程:读取数据->训练模型->预测结果->模型优化(求解最优权重和偏置)模型的保存与加载:命令行参数使用:tf.flags。

weixin_44852067的博客 1417

对接萤石平台调用播放

萤石api 管理 · 萤石开放平台API文档 httpclient pom <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.2</version> </dependency> package com.ruoyi...

u011799016的博客 1773

一、数学建模层次分析法(AHP)【清风数学建模个人笔记】

层次分析法: 层次分析法主要用于解决评价类问题(例如:选择哪种方案更好、哪位员工、运动员等表现得更优秀) 评价类问题: 分析问题得出评判问题的子标,分别给不同子标赋予权重(权重和要为1) ...

m0_58882109的博客 1万+

TensorFlow 学习笔记(1)----线性回归(linear regression)的TensorFlow实现

此系列将会每日持续更新,欢迎关注 线性回归(linear regression)的TensorFlow实现 #这里是基于python 3.7版本的TensorFlow TensorFlow是一个机器学习的利器,打包了众多的机器学习中的模型以及各种数学上的处理 因此利用TensorFlow来学习机器学习能起到事半功倍的效果。 以下代码即是线性回归的实现(实现对函数 y =...

alexjob1008的博客 293

「HTML和CSS入门指南」hr 标签详解

标签是 HTML5 中用于插入水平分割线的标签,常用于在页面中添加分隔线或者段落之间的分割线。通过灵活运用 标签和属性,我们可以帮助用户更好地理解页面内容,同时也可以美化和装饰页面。在实际应用中需要注意避免过度使用 标签,以使页面看起来简洁明了。

a451319296的博客 7661

机器学习与Tensorflow(1)——机器学习基本概念、tensorflow实现简单线性回归

一、机器学习基本概念 1.训练集和测试集 训练集(training set/data)/训练样例(training examples): 用来进行训练,也就是产生模型或者算法的数据集 测试集(testing set/data)/测试样例 (testing examples):用来专门进行测试已经学习好的模型或者算法的数据集 2.特征向量 特征向量(features/featur...

WUWEILINCX123890的博客 246

Python爬虫实战教程:如何高效爬取税务局通知通告

税务局发布的通知通告包含政策法规、办税指南、公告信息等,是纳税人、企业合规经营的重要参考。官网发布频率高,手动查看不便,自动爬取并保存,方便信息及时掌握及历史数据归档。本文以合法合规的方式示范,建议实际应用前确认目标网站允许爬取的范围和方式。建议使用pandas进行数据清洗,如去重、空值处理等。对于研究税务政策、进行大数据分析、搭建行业信息平台,爬取税务局通知通告信息尤为关键。公告列表以分页形式展现,包含标题、发布时间和详情页链接。进行政策趋势图、发布频率统计等可视化。爬取公开数据时,务必遵守网站的。

2201_76125261的博客 1780

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

深度学习基础之《TensorFlow框架(9)—案例:实现线性回归》

(3)这里将数据分布的规律确定,是为了使我们训练出的参数跟真实的参数(即0.8和0.7)比较是否训练准确。(4)当梯度下降到一定程度,使得损失函数比较小的时候,所对应的权重和偏置,就是我们要求的模型参数。y_predict = x * 权重(1, 1) + 偏置(1, 1)(2)learning_rate:学习率,一般为0-1之间比较小的值。(2)数据本身的分布为 y = 0.8 * x + 0.7。(1)有个假设函数,假定特征值和目标值满足这样的关系。100行1列,乘以1行1列,得出100行1列。

csj50的专栏 703

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

TensorFlow简易学习[2]:实现线性回归

  上篇介绍了TensorFlow基本概念和基本操作,本文将利用TensorFlow举例实现线性回归模型过程。 线性回归算法   线性回归算法是机器学习中典型监督学习算法,不同于分类算法,线性回归的输出是整个实数空间R(故也可用线性回归做分类)。关于线性回归网络资料很多,算法具体推演不做叙述,这里简要概括基本点。   目标函数y(不考虑噪声形式):            损失函数Loss...

weixin_30580943的博客 102

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

暴力模板挖掘:worldquant-miner如何高效搜索算子与数据字段的组合空间

worldquant-miner 是一个开源的 WorldQuant Alpha 挖掘工具集,它的核心思路之一是**暴力模板挖掘**:先用本地大模型批量生成轻量级的 alpha 表达式模板,再把模板里的数据字段占位符逐一替换为上千个真实数据字段,在多个区域(USA、EUR、CHN、GLB、ASI)中并行回测,从而快速搜索「算子 × 数据字段」的巨大组合空间,自动筛出 Sharpe、Margin、F

gitblog_00069的博客 482

【TensorFlow学习及算法实现】简单线性回归

TensorFlow实现简单线性回归 采用波士顿房价数据集的房间数量(RM)进行简单线性回归,目标是预测在最后一列(MEDV)给出的房价。

cherreggy的博客 342

TensorFlow学习笔记-实现Linear Regression

TensorFlow的输入输出是被称为张量的多维数组(因此被称为“tensor flow”),就像NumPy数组一样,张量具有类型和形状,NumPy中用ndarray表示。以下代码操作二维数组对加利福尼亚的房屋数据进行线性回归,数据集可以自行百度搜索即可。获取数据集后,向所有的训练实例中添加一个额外的偏置输入特征(X0=1),之后创建两个TensorFlow常量节点x和y保存该数据和目标,并且使用...

tjulxh的博客 583

Tensorflow框架学习记录--day01--API以及案例:实现线性回归

Tensorflow框架学习记录–day01–API以及案例:实现线性回归 基础API tf.app 这个模块相当于为tensorflow进行的脚本提供一个main函数入口。 tf.image tensorflow的图像处理操作。主要是一些颜色变化、变形和图像的编码和解码。 tf.gfile 这个模块提供了一组文件操作函数。 tf.summary 用来生成tensorboard可用的统计日志,目前Summary主要提供了4种类型:audio、image、histogram、scalar tf.python_

qq_22658373的博客 2138

【深度学习】TensorFlow学习之路一:TensorFlow简介及线性回归、逻辑回归实现

一、TensorFlow简介 TensorFlow是啥? TensorFlow是一款强大的开源软件,用于数值计算,尤其适用于类似机器学习这样的大规模计算。 TensorFlow计算流程是怎样的? ...

baidu_39413110的博客 392

tensorflow 学习(一)实现线性回归

我的理解: 1. tensorflow 和 spark的思想有点类似,都是lazy执行; 在调用tf.Session().run(...)之前所有的操作都只是在构建Graph的过程,这期间不会执行操作; tf.Session().run(op) 调用时,op操作才会被执行。 2. tf.Session().run(x) 当x是operate (mul, square,trai

yinglang19941010的专栏 5945

Python深度学习笔记08——tensorflow实现线性回归

目录 前言 一、复习回顾 二、验证码识别原理分析 三、案例练习 总结 前言 关于python深度学习笔记整理08——tensorflow实现线性回归,本文通过学习视频《python深度学习》整理学习笔记。视频学习地址:https://www.bilibili.com/video/BV1D7411y7YR?p=1 一、复习回顾 验证码案例流程: 验证码数据准备 处理数据到tensorflow方便读写 读取数据,处理数据的标签值one-hot编码 输入模型计算 二、分...

Liii_NN的博客 531

《tensorflow学习》笔记三——tf实现线性回归算法

1、利用sklearn中封装好的房价数据集来实现线性回归。有关线性回归的算法,此处不再详细的赘述,大致说一下思路。首先导入相关的数据集,读取数据import tensorflow as tf import numpy as np from sklearn.datasets import fetch_california_housing housing = fetch_california_hous...

qq_40657670的博客 1201

tensorflow学习笔记 -- 简单线性回归实现

7. 简单线性回归 import tensorflow as tf def regression(): """ 用Tensorflow实现一个简单的线性回归 我们预设一个线性函数然后通过线性回归看看能否得到这个函数对应的参数 预设的函数:y = 0.7 * x + 0.5 (其中0.7和0.5是我们需要通过训练得到的参数,也就是最终需要的得到模型) ...

duduhonghong的博客 770
上一篇: 深度学习--防止过拟合的几种方法
下一篇: numpy入门100题
左左左左想
博客等级 码龄12年 57粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值