tensorflow如何让损失函数只对一个变量求导(tensorflow:损失函数和优化器)

2026-08-02 15:45:02 0

tensorflow如何让损失函数只对一个变量求导(tensorflow:损失函数和优化器)

本篇文章给大家谈谈tensorflow如何让损失函数只对一个变量求导,以及tensorflow:损失函数和优化器对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

本文目录

tensorflow:损失函数和优化器

1. 损失函数是在graph中定义的经过operation的tensor。

2.损失函数最终要带入到优化器的minimize方法中做参数。minimize方法内部包含了compute_gradients和apply_gradients方法。

3. 优化器的minimize方法返回的是operation,一般命名为train_step。

4.session的run方法的参数,如果是operation,则返回值为None;如果是tensor,则返回值是ndarray。因此sess.run(train_step,feed_dict)无返回结果,只起训练作用。

5.Variable定义时必须给出初始值。Variable是变量,其值保存在session中,session的global_variable_initializer实际上是初始值的保存。

TensorFlow入门

1.可扩展参数: 从 kwargs 字典里获取,可限制key的取值

vars : name scope 下的变量(字典)
placeholders : 外部变量占位,一般是特征和标签(字典)
layers : 神经网络的 layer (列表)
activations : 每个 layer 的输出结果(列表)
inputs : 输入
output : 输出
loss : 损失
accuracy : 准确率
optimizer :优化器
opt_op :最优化的 op 操作

_build 是私有 build 方法,在继承Model的具体实现时对 layers 进行 append 操作,下面介绍 build 方法:

调用 _build ,所有变量设置共享空间( self.name )
构建模型序列:给输入,通过layer()返回输出,又将这个输出再次作为输入到下一个 layer() 中,循环这一过程;最终,取最后一层 layer 的结果作为 output
保存 name scope下 的变量到 self.vars
模型效果度量: _loss 方法, _accuracy 方法

常用的结构化数据文件格式有csv、txt 、libsvm,本篇文章主要说明结构化数据(csv/txt)如何在TF框架进行高效、灵活的读取,避免一些不合理的方式,迈出算法开发标准化、工程化的第一步。

最常见的读取数据的方式是利用pandas包将csv、txt读取为DataFrame,一次全部放入内存。这是一种非常低效的方式,应该尽量避免这种读取方法。其他第三方封装python读取方式的包(TFLearn等)也不建议使用,推荐使用TF框架的OP操作进行数据读取。

高效的 TensorFlow 读取方式是将数据读取转换成 OP,通过 session run 的方式拉去数据。读取线程源源不断地将文件系统中的文件读入到一个内存的队列中,而负责计算的是另一个线程,计算需要数据时,直接从内存队列中取就可以了,这样就可以解决GPU因为IO而空闲的问题。同时,不会一次性的preload到内存,再大的数据量也不会超出内存的限制。

梯度下降 :梯度下降是一个在机器学习中用于寻找较佳结果(曲线的最小值)的迭代优化算法。梯度的含义是斜率或者斜坡的倾斜度。下降的含义是代价函数的下降。
 算法是迭代的,意思是需要多次使用算法获取结果,以得到最优化结果。梯度下降的迭代性质能使欠拟合演变成获得对数据的较佳拟合。

 梯度下降中有一个称为学习率的参量。如上图左所示,刚开始学习率较大,因此下降步长更大。随着点的下降,学习率变得越来越小,从而下降步长也变小。同时,代价函数也在减小,或者说代价在减小,有时候也称为损失函数或者损失,两者是一样的。(损失/代价的减小是一个概念)。

 只有在数据很庞大的时候(在机器学习中,数据一般情况下都会很大),我们才需要使用epochs,batch size,iteration这些术语,在这种情况下,一次性将数据输入计算机是不可能的。因此,为了解决这个问题,我们需要把数据分成小块,一块一块的传递给计算机,在每一步的末端更新神经网络的权重,拟合给定的数据。

(1)batchsize:批大小。在深度学习中,一般采用SGD训练,即每次训练在训练集中取batchsize个样本训练;
(2)iteration:1个iteration等于使用batchsize个样本训练一次;
(3)epoch:1个epoch等于使用训练集中的全部样本训练一次;

如何给某一层添加L2正则化

tf.nn.l2_loss()和tf.contrib.layers.l2_regularizer(),使用示例如下:
import tensorflow as tf

weights = tf.constant(, dtype=tf.float32)
sess = tf.InteractiveSession()
# 计算的是所有元素的平方和再除以2
print(tf.nn.l2_loss(weights).eval()())
# 等价于
print(tf.contrib.layers.l2_regularizer(1.)(weights).eval())
# output: 45.5
接下来将介绍两种方法将l2正则化项添加到损失函数后:
一、遍历trainable variables添加L2正则化项:
1.遍历可训练参数,将每个参数传入tf.nn.l2_loss()进行计算并相加起来;
2.乘以weight_decay并与base_loss相加。
weight_decay = 0.001

base_loss = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(labels=labels, logits=logits))
l2_loss = weight_decay * tf.add_n()
loss = base_loss + l2_loss
注意:该过程对每个trainable variable都进行了l2正则化,包括权值w和偏置b。有种说法是如果对偏执b进行l2正则化将会导致欠拟合,一般只需要对权值w进行正则化,所以来看第二种方法。
二、在构造网络层时传入l2正则化函数:
如下所示,在构造网络层时,将’kernel_initializer’参数设为l2正则化函数,则tensorflow会将该权重变量(卷积核)的l2正则化项加入到集合 tf.GraphKeys.REGULARIZATOIN_LOSSES里。
x = tf.layers.conv2d(x, 512, (3, 3),
padding=’same’,
activation=tf.nn.relu,
kernel_initializer=tf.truncated_normal_initializer(stddev=0.01),
kernel_regularizer=tf.contrib.layers.l2_regularizer(0.001)
在计算loss时使用tf.get_collection()来获取tf.GraphKeys.REGULARIZATOIN_LOSSES集合,然后相加即可:
base_loss = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(labels=labels, logits=logits))
l2_loss = tf.get_collection(tf.GraphKeys.REGULARIZATION_LOSSES)
loss = tf.add_n( + l2_loss, name="loss")
欢迎补充指正。

关于tensorflow如何让损失函数只对一个变量求导,tensorflow:损失函数和优化器的介绍到此结束,希望对大家有所帮助。

tensorflow如何让损失函数只对一个变量求导(tensorflow:损失函数和优化器)

本文编辑:admin

更多文章:


apache不能在本地计算机启动(关于“Windows不能在本地计算机启动Apache2.并参考特定服务错误代码1“问题解决)

apache不能在本地计算机启动(关于“Windows不能在本地计算机启动Apache2.并参考特定服务错误代码1“问题解决)

大家好,如果您还对apache不能在本地计算机启动不太了解,没有关系,今天就由本站为大家分享apache不能在本地计算机启动的知识,包括关于“Windows不能在本地计算机启动Apache2.并参考特定服务错误代码1“问题解决的问题都会给大

2026年1月4日 19:00

deepin开机的四个选项(win10和deepin双系统怎样设置启动项)

deepin开机的四个选项(win10和deepin双系统怎样设置启动项)

各位老铁们好,相信很多人对deepin开机的四个选项都不是特别的了解,因此呢,今天就来为大家分享下关于deepin开机的四个选项以及win10和deepin双系统怎样设置启动项的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看

2026年3月2日 15:45

insert into 和select into(select into from和insert into select都是用来复制表,两者有什么区别)

insert into 和select into(select into from和insert into select都是用来复制表,两者有什么区别)

大家好,如果您还对insert into 和select into不太了解,没有关系,今天就由本站为大家分享insert into 和select into的知识,包括select into from和insert into select都

2026年3月18日 16:00

deficiency词源(minus的详细意思minus的详细意思是什么)

deficiency词源(minus的详细意思minus的详细意思是什么)

“deficiency词源”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看deficiency词源(minus的详细意思minus的详细意思是什么)!本文目录minus的详细意思minus的详细意思是什么deficiency

2026年9月23日 15:30

mysql workbench怎么运行sql文件(如何使用MySQL Workbench导入.sql文件)

mysql workbench怎么运行sql文件(如何使用MySQL Workbench导入.sql文件)

大家好,关于mysql workbench怎么运行sql文件很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于如何使用MySQL Workbench导入.sql文件的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解

2025年5月23日 03:00

conduct动词造句(初中英语scientists ____(conduct)a survey on how to protect the wildlife inthe coming new year)

conduct动词造句(初中英语scientists ____(conduct)a survey on how to protect the wildlife inthe coming new year)

“conduct动词造句”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看conduct动词造句(初中英语scientists ____(conduct)a survey on how to protect the wildl

2026年3月28日 14:15

webpack缺点(如何理解webpack文档中对AMD缺点的描述)

webpack缺点(如何理解webpack文档中对AMD缺点的描述)

大家好,如果您还对webpack缺点不太了解,没有关系,今天就由本站为大家分享webpack缺点的知识,包括如何理解webpack文档中对AMD缺点的描述的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录如何理解we

2026年9月10日 12:30

discuz采集插件(火车头采集的数据怎么发布在discuz网站)

discuz采集插件(火车头采集的数据怎么发布在discuz网站)

“discuz采集插件”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看discuz采集插件(火车头采集的数据怎么发布在discuz网站)!本文目录火车头采集的数据怎么发布在discuz网站discuz怎么安装插件让自己的Di

2025年11月7日 09:30

web服务器安全防护(如何保证Web服务器安全)

web服务器安全防护(如何保证Web服务器安全)

“web服务器安全防护”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看web服务器安全防护(如何保证Web服务器安全)!本文目录如何保证Web服务器安全网络安全防范措施主要有哪些Web服务器端的安全措施有哪些web服务器可能

2025年8月1日 04:15

accommodation theory名词解释(带sion后缀的单词~~快快快!)

accommodation theory名词解释(带sion后缀的单词~~快快快!)

“accommodation theory名词解释”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看accommodation theory名词解释(带sion后缀的单词~~快快快!)!本文目录带sion后缀的单词~~快快快!

2026年7月27日 18:15

建站什么程序好(建网站用哪个软件最佳)

建站什么程序好(建网站用哪个软件最佳)

各位老铁们,大家好,今天由我来为大家分享建站什么程序好,以及建网站用哪个软件最佳的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录建网站用哪个软件最佳

2026年1月16日 09:30

htmlcssjs软件下载手机(前端div+css怎么放到手机里面查看效果)

htmlcssjs软件下载手机(前端div+css怎么放到手机里面查看效果)

“htmlcssjs软件下载手机”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看htmlcssjs软件下载手机(前端div+css怎么放到手机里面查看效果)!本文目录前端div+css怎么放到手机里面查看效果只能在手机上面打

2026年2月9日 05:00

centos7怎么安装yum(CentOS7 配置 yum 源和 epel 源)

centos7怎么安装yum(CentOS7 配置 yum 源和 epel 源)

大家好,如果您还对centos7怎么安装yum不太了解,没有关系,今天就由本站为大家分享centos7怎么安装yum的知识,包括CentOS7 配置 yum 源和 epel 源的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧

2025年11月6日 00:30

面向对象程序设计是java吗(Java是一种面向对象的编程语言吗)

面向对象程序设计是java吗(Java是一种面向对象的编程语言吗)

本篇文章给大家谈谈面向对象程序设计是java吗,以及Java是一种面向对象的编程语言吗对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录Java是一种面向对象的编程语言吗Java语言和C语言都是面向对象的程序设计语言Java是一

2025年7月24日 13:45

linux配置与管理web服务器(高分请教如何搭建Linux下的web服务器)

linux配置与管理web服务器(高分请教如何搭建Linux下的web服务器)

本篇文章给大家谈谈linux配置与管理web服务器,以及高分请教如何搭建Linux下的web服务器对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本

2025年12月1日 02:00

vfp中的常用函数(求Visual Foxpro常用数值函数)

vfp中的常用函数(求Visual Foxpro常用数值函数)

大家好,关于vfp中的常用函数很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于求Visual Foxpro常用数值函数的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所

2026年4月7日 23:15

bath词性变化(淋浴的词性淋浴的词性是什么)

bath词性变化(淋浴的词性淋浴的词性是什么)

其实bath词性变化的问题并不复杂,但是又很多的朋友都不太了解淋浴的词性淋浴的词性是什么,因此呢,今天小编就来为大家分享bath词性变化的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录淋浴的词性淋浴的词性是什么b

2026年4月11日 09:00

淘宝智能版导航代码(求淘宝店铺导航条代码,半透明状态的如下图)

淘宝智能版导航代码(求淘宝店铺导航条代码,半透明状态的如下图)

今天给各位分享求淘宝店铺导航条代码,半透明状态的如下图的知识,其中也会对求淘宝店铺导航条代码,半透明状态的如下图进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录求淘宝店铺导航条代码,半透明状态的如下图淘宝导航条

2026年1月29日 13:00

shady是什么意思(Eminem为什么又叫slim shady,什么意思)

shady是什么意思(Eminem为什么又叫slim shady,什么意思)

“shady是什么意思”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看shady是什么意思(Eminem为什么又叫slim shady,什么意思)!本文目录Eminem为什么又叫slim shady,什么意思谁知道Emine

2025年9月24日 14:15

冒险岛n8数据库管理工具(冒险岛架设数据库怎么弄)

冒险岛n8数据库管理工具(冒险岛架设数据库怎么弄)

“冒险岛n8数据库管理工具”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看冒险岛n8数据库管理工具(冒险岛架设数据库怎么弄)!本文目录冒险岛架设数据库怎么弄冒险岛n8是什么《冒险岛》SF架设方法是什么怎样用冒险岛gm管理工具

2026年4月2日 20:45

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索