热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

tensorflow一元线性模型

数据见deeplearning,这是一个一元输入、一元输出的线性模型,下面是具体实现过程:importtensorflowastfim

    数据见deep learning,这是一个一元输入、一元输出的线性模型,下面是具体实现过程:

import tensorflow as tf
import numpy as np
#通过numpy.loadtxt()函数解析当前目录数据x.y
x_data=np.loadtxt('./ex2x.dat')
y_data=np.loadtxt('./ex2y.dat')
#设置线性函数参数W、b
#W初始化为均匀随机数
W=tf.Variable(tf.random_uniform([1],-1.0,1.0))
#b初始化为0
b=tf.Variable(tf.zeros([1]))
#参数下输出为y_
y_=W*x_data+b
#设置损失函数
loss=tf.reduce_mean(tf.square(y_data-y_))/2
#定义梯度下降优化器 设置学习率
optimizer=tf.train.GradientDescentOptimizer(0.07)
#定义优化方法
train=optimizer.minimize(loss)#会话执行图
sess=tf.Session()
#初始化变量
init=tf.global_variables_initializer()
sess.run(init)#执行梯度下降优化
for i in range(1500):sess.run(train)if i%100==0:print sess.run(W),sess.run(b)
执行结果如下:

[0.38659847] [0.07704204]
[0.13098377] [0.41046652]
[0.09381685] [0.5863949]
[0.07821415] [0.67140335]
[0.07077159] [0.71229064]
[0.06719442] [0.73195165]
[0.06547432] [0.7414059]
[0.06464729] [0.7459518]
[0.06424948] [0.7481382]
[0.06405827] [0.7491891]
[0.06396635] [0.74969447]
[0.06392214] [0.74993736]
[0.06390087] [0.75005424]
[0.06389064] [0.7501105]
[0.0638857] [0.7501377]

当然实际过程并没有这么顺利,当我令loss=tf.reduce_mean(tf.square(y_data-y_)),学习率设为0.07时,会出现如下结果:

[0.48159832] [0.08058839]
[nan] [nan]
[nan] [nan]
[nan] [nan]
[nan] [nan]
[nan] [nan]
[nan] [nan]
[nan] [nan]
[nan] [nan]
[nan] [nan]
[nan] [nan]
[nan] [nan]
[nan] [nan]
[nan] [nan]
[nan] [nan]

但是调小学习率为0.01时却又可以收敛,由此可以看出产生nan的原因是由于learning rate 过大,那么为什么将loss除2以后就又收敛了呢,这说明learning rate 其实是与loss相对应的;之前让我百思不得其解的是,为什么学习率为0.07,而loss不除以2的时候会出现nan,但是当把loss除以2的时候就收敛了,后来发现学习率其实是乘以loss的梯度的,当loss除2的时候,相当于同等条件下学习率除2.至于产生nan的详细解释,我觉得是学习率过大,导致梯度爆炸,超出数值范围,于是显示为 nan,对于这个问题我也欢迎大家一起讨论,因为的确还存在一些疑问。


推荐阅读
  • 本文介绍了如何利用 `matplotlib` 库中的 `FuncAnimation` 类将 Python 中的动态图像保存为视频文件。通过详细解释 `FuncAnimation` 类的参数和方法,文章提供了多种实用技巧,帮助用户高效地生成高质量的动态图像视频。此外,还探讨了不同视频编码器的选择及其对输出文件质量的影响,为读者提供了全面的技术指导。 ... [详细]
  • 目录预备知识导包构建数据集神经网络结构训练测试精度可视化计算模型精度损失可视化输出网络结构信息训练神经网络定义参数载入数据载入神经网络结构、损失及优化训练及测试损失、精度可视化qu ... [详细]
  • 使用Python代码高效生成大规模随机数据集(千万级) ... [详细]
  • 每年,意甲、德甲、英超和西甲等各大足球联赛的赛程表都是球迷们关注的焦点。本文通过 Python 编程实现了一种生成赛程表的方法,该方法基于蛇形环算法。具体而言,将所有球队排列成两列的环形结构,左侧球队对阵右侧球队,首支队伍固定不动,其余队伍按顺时针方向循环移动,从而确保每场比赛不重复。此算法不仅高效,而且易于实现,为赛程安排提供了可靠的解决方案。 ... [详细]
  • 本文介绍了如何使用Python爬取妙笔阁小说网仙侠系列中所有小说的信息,并将其保存为TXT和CSV格式。主要内容包括如何构造请求头以避免被网站封禁,以及如何利用XPath解析HTML并提取所需信息。 ... [详细]
  • 本文详细介绍了如何使用 Python 进行主成分分析(PCA),包括数据导入、预处理、模型训练和结果可视化等步骤。通过具体的代码示例,帮助读者理解和应用 PCA 技术。 ... [详细]
  • 浅析python实现布隆过滤器及Redis中的缓存穿透原理_python
    本文带你了解了位图的实现,布隆过滤器的原理及Python中的使用,以及布隆过滤器如何应对Redis中的缓存穿透,相信你对布隆过滤 ... [详细]
  • 本文介绍如何使用OpenCV和线性支持向量机(SVM)模型来开发一个简单的人脸识别系统,特别关注在只有一个用户数据集时的处理方法。 ... [详细]
  • 利用python爬取豆瓣电影Top250的相关信息,包括电影详情链接,图片链接,影片中文名,影片外国名,评分,评价数,概况,导演,主演,年份,地区,类别这12项内容,然后将爬取的信息写入Exce ... [详细]
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • Python错误重试让多少开发者头疼?高效解决方案出炉
    ### 优化后的摘要在处理 Python 开发中的错误重试问题时,许多开发者常常感到困扰。为了应对这一挑战,`tenacity` 库提供了一种高效的解决方案。首先,通过 `pip install tenacity` 安装该库。使用时,可以通过简单的规则配置重试策略。例如,可以设置多个重试条件,使用 `|`(或)和 `&`(与)操作符组合不同的参数,从而实现灵活的错误重试机制。此外,`tenacity` 还支持自定义等待时间、重试次数和异常处理,为开发者提供了强大的工具来提高代码的健壮性和可靠性。 ... [详细]
  • 通过导入NumPy库并使用其随机模块,可以轻松生成随机矩阵。具体而言,`np.random.seed(n)`用于设置随机数生成器的种子,其中`n`是一个整数,确保每次运行时生成相同的随机数序列。而`np.random.rand(n)`则用于生成一个形状为`(n,)`的一维随机数组,每个元素都在0到1之间均匀分布。若需生成多维随机矩阵,可将`n`替换为指定的形状元组,如`np.random.rand(m, n)`生成一个形状为`(m, n)`的二维随机矩阵。 ... [详细]
  • 通过使用 `pandas` 库中的 `scatter_matrix` 函数,可以有效地绘制出多个特征之间的两两关系。该函数不仅能够生成散点图矩阵,还能通过参数如 `frame`、`alpha`、`c`、`figsize` 和 `ax` 等进行自定义设置,以满足不同的可视化需求。此外,`diagonal` 参数允许用户选择对角线上的图表类型,例如直方图或密度图,从而提供更多的数据洞察。 ... [详细]
  • 利用 Python Socket 实现 ICMP 协议下的网络通信
    在计算机网络课程的2.1实验中,学生需要通过Python Socket编程实现一种基于ICMP协议的网络通信功能。与操作系统自带的Ping命令类似,该实验要求学生开发一个简化的、非标准的ICMP通信程序,以加深对ICMP协议及其在网络通信中的应用的理解。通过这一实验,学生将掌握如何使用Python Socket库来构建和解析ICMP数据包,并实现基本的网络探测功能。 ... [详细]
author-avatar
爷们郭子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有