首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在clip_by_weight中以张量形式访问Keras层中的权重变量?

如何在clip_by_weight中以张量形式访问Keras层中的权重变量?
EN

Stack Overflow用户
提问于 2017-03-01 03:13:19
回答 1查看 2.9K关注 0票数 0

我正在实现WGAN,需要裁剪权重变量。

我目前正在使用带有Keras的Tensorflow作为高级API。因此,使用Keras构建层以避免手动创建和初始化变量。

问题是WGAN需要裁剪权重变量,一旦我得到了这些权重变量,就可以使用tf.clip_by_value(x, v0, v1)来完成,但是我不知道如何安全地获得它们。

一种可能的解决方案可能是使用tf.get_collection()获取所有可训练变量。但我不知道如何只得到权值变量,而没有偏差变量。

另一种解决方案是layer.get_weights(),但它获得了numpy数组,尽管我可以使用numpy API对它们进行剪辑,并使用layer.set_weights()设置它们,但这可能需要CPU-GPU公司,而且可能不是一个好的选择,因为需要在每个火车步骤上执行剪辑操作。

我知道的唯一方法是使用精确的变量名直接访问它们,这可以从TF低级API或TensorBoard获得,但这可能并不安全,因为Keras的命名规则并不一定是稳定的。

是否有任何干净的方法只在那些带有Tensorflow和Keras的clip_by_value上执行W

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-01 04:28:41

可以使用约束(这里)类对参数实现新的约束。

下面是如何轻松地实现权值剪辑并在模型中使用它的方法。

代码语言:javascript
运行
AI代码解释
复制
from keras.constraints import Constraint
from keras import backend as K

class WeightClip(Constraint):
    '''Clips the weights incident to each hidden unit to be inside a range
    '''
    def __init__(self, c=2):
        self.c = c

    def __call__(self, p):
        return K.clip(p, -self.c, self.c)

    def get_config(self):
        return {'name': self.__class__.__name__,
                'c': self.c}

import numpy as np
from keras.models import Sequential
from keras.layers import Dense

model = Sequential()
model.add(Dense(30, input_dim=100, W_constraint = WeightClip(2)))
model.add(Dense(1))

model.compile(loss='mse', optimizer='rmsprop')

X = np.random.random((1000,100))
Y = np.random.random((1000,1))

model.fit(X,Y)

我已经测试了上述代码的运行情况,但没有测试约束的有效性。您可以通过使用model.get_weights()model.layers[idx].get_weights()获得模型权重并检查其是否符合约束来实现。

注意:约束不是添加到所有模型权重中。但是,仅对其使用的特定层的权重,以及W_constraintW param和b_constraint添加到b (偏置) param的约束。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42530216

复制
相关文章
为什么HTTPS比HTTP更安全?
近几年,互联网发生着翻天覆地的变化,尤其是我们一直习以为常的HTTP协议,在逐渐的被HTTPS协议所取代,在浏览器、搜索引擎、CA机构、大型互联网企业的共同促进下,互联网迎来了“HTTPS加密时代”,HTTPS将在未来的几年内全面取代HTTP成为传输协议的主流。
coder_koala
2019/07/30
4290
为什么HTTPS比HTTP更安全?
为什么 classmethod 比 staticmethod 更受宠?
我们知道,classmethod 和 staticmethod 都可以作为函数的装饰器,都可用于不涉及类的成员变量的方法,但是你查一下 Python 标准库就会知道 classmethod 使用的次数(1052)要远远多于 staticmethod(539),这是为什么呢?
somenzz
2021/12/27
5910
为什么 classmethod 比 staticmethod 更受宠?
为什么 https 比 http 更安全?
在HTTPS出现之前,所有请求都是以明文方式送出的,那么如果有人在传输途中偷听或者抓包的话,你的所有通信内容都会泄漏。比较安全的方法是将通信内容加密在发送给对方。加密方法有两种,对称加密和非对称加密。
杰哥的IT之旅
2020/06/18
6350
为什么 https 比 http 更安全?
为什么HTTPS比HTTP更安全?
近几年,互联网发生着翻天覆地的变化,尤其是我们一直习以为常的HTTP协议,在逐渐的被HTTPS协议所取代,在浏览器、搜索引擎、CA机构、大型互联网企业的共同促进下,互联网迎来了“HTTPS加密时代”,HTTPS将在未来的几年内全面取代HTTP成为传输协议的主流。
前端迷
2019/08/31
4680
为什么HTTPS比HTTP更安全?
近几年,互联网发生着翻天覆地的变化,尤其是我们一直习以为常的HTTP协议,在逐渐的被HTTPS协议所取代,在浏览器、搜索引擎、CA机构、大型互联网企业的共同促进下,互联网迎来了“HTTPS加密时代”,HTTPS将在未来的几年内全面取代HTTP成为传输协议的主流。
Nealyang
2019/09/29
7840
为什么HTTPS比HTTP更安全?
为什么HTTPS比HTTP更安全?
近几年,互联网发生着翻天覆地的变化,尤其是我们一直习以为常的HTTP协议,在逐渐的被HTTPS协议所取代,在浏览器、搜索引擎、CA机构、大型互联网企业的共同促进下,互联网迎来了“HTTPS加密时代”,HTTPS将在未来的几年内全面取代HTTP成为传输协议的主流。
心莱科技雪雁
2019/06/05
4480
为什么HTTPS比HTTP更安全?
前缀、中缀、后缀表达式
转至: 前缀、中缀、后缀表达式 它们都是对表达式的记法,因此也被称为前缀记法、中缀记法和后缀记法。它们之间的区别在于运算符相对与操作数的位置不同:前缀表达式的运算符位于与其相关的操作数之前;中缀和后缀
Christal_R
2017/12/25
1.1K0
前缀、中缀、后缀表达式
在函数式编程语言中,为了表示方便,出现了一些新的语法格式。所谓前缀、中缀、后缀表达式,它们之间的区别在于运算符相对与操作数的位置不同,为了说明它们的概念,首先来看一下中缀表达式。 所谓中缀表达式,就是将函数名放到两个操作数中间的表达式,其中,左侧的操作数代表函数对象或值,右侧的操作数代表函数的参数值。例如: (3 + 4) × 5 - 6 就是中缀表达式 - × + 3 4 5 6 前缀表达式 3 4 + 5 × 6 - 后缀表达式 前缀表达式 前缀表达式又称为前缀记法、波兰式,主要用于表示运算符位于操作数
xiangzhihong
2018/02/08
1.1K0
前缀、中缀、后缀表达式
前缀、中缀、后缀表达式,它们之间的区别在于运算符相对与操作数的位置不同:前缀表达式的运算符位于与其相关的操作数之前;中缀和后缀同理。对计算机来说中缀表达式是很复杂的,因此计算表达式的值时,通常需要先将中缀表达式转换为前缀或后缀表达式,然后再进行求值。对计算机来说,计算前缀或后缀表达式的值非常简单。 举例: (3 + 4) × 5 - 6  中缀表达式 - × + 3 4 5 6  前缀表达式 3 4 + 5 × 6 -  后缀表达式 前缀表达式的求值: 从右至左扫描表达式,遇到数字时,将数字压入堆栈,
yawn
2018/03/14
8560
为什么 Nginx 比 Apache 更牛叉?
Nginx才短短几年,就拿下了Web服务器大壁江山,众所周知,Nginx在处理大并发静态请求方面,效率明显高于Httpd,甚至能轻松解决C10K问题。
Java技术栈
2023/02/27
4670
为什么 Nginx 比 Apache 更牛叉?
前缀、中缀、后缀表达式
它们都是对表达式的记法,因此也被称为前缀记法、中缀记法和后缀记法。它们之间的区别在于运算符相对与操作数的位置不同:前缀表达式的运算符位于与其相关的操作数之前;中缀和后缀同理。 举例: (3 + 4) × 5 - 6 就是中缀表达式 - × + 3 4 5 6 前缀表达式 3 4 + 5 × 6 - 后缀表达式 中缀表达式(中缀记法) 中缀表达式是一种通用的算术或逻辑公式表示方法,操作符以中缀形式处于操作数的中间。中缀表达式是人们常用的算术表示方法。 虽然人的大脑很容易理解与分析中缀表达式,但对计算
_gongluck
2018/03/08
1.3K0
如何添加前缀和后缀?
例如:如果是数字100,我们需要变成为"自定义100自定义",那我们需要怎么样处理呢?
逍遥之
2020/03/23
1.8K0
字典树和前缀树_前缀树和后缀树
常关注本blog的读者朋友想必看过此篇文章:从B树、B+树、B*树谈到R 树,这次,咱们来讲另外两种树:Tire树与后缀树。不过,在此之前,先来看两个问题。 第一个问题: 一个文本文件,大约有一万行,每行一个词,要求统计出其中最频繁出现的前10个词,请给出思想,给出时间复杂度分析。
全栈程序员站长
2022/10/04
1.4K0
字典树和前缀树_前缀树和后缀树
前缀中缀后缀表达式
<操作数><操作符><操作数> 就像我们平时用到的大部分计算表达式都是中缀 比如 1+1 3*2 等等 中缀表达式虽然很方便人使用,但是对机器却不太友好 比如我要计算(1+1)*3+2 机器将怎样区分操作符的优先级,机器不是人,机器是很傻的,所以我们要提供一种新的算法,让机器无脑就可以算。 这时候就要引出 后缀表达式
用户7272142
2023/10/11
2200
【答疑解惑】++前缀和后缀的区别
我的解答: 这个知识点在C、C++和Java中都是一样的,++前缀就进行自增然后再用自增后的值,++后缀则是先用这个值,然后再进行自增。 上面的题目是一个很好的面试题,网友们还是好好看一下,如果是让输
程序员互动联盟
2018/03/14
8280
【答疑解惑】++前缀和后缀的区别
前缀、中缀、后缀表达式「建议收藏」
关键字:概念, 前缀表达式, 前缀记法, 中缀表达式, 中缀记法, 波兰式, 后缀表达式, 后缀记法, 逆波兰式
全栈程序员站长
2022/07/05
2K0
mybatis中去除多余的前缀或者后缀
转载自 https://blog.csdn.net/qq_33315102/article/details/80253023
allsmallpig
2021/02/25
9270
为什么插入排序比冒泡排序更受欢迎?
插入排序和冒泡排序的时间复杂度相同,都是 O(n2),在实际的软件开发里,为什么我们更倾向于使用插入排序算法而不是冒泡排序算法呢?
大猫的Java笔记
2020/09/30
8820
为什么前后端分离了,你比从前更痛苦?
前后端分离早已经不是新闻,当真正分离之后确遇到了更多问题。要想解决现在的痛,就要知道痛的原因:
Jean
2018/10/18
6050
为什么前后端分离了,你比从前更痛苦?
HTML常用符号
大家好,又见面了,我是全栈君 HTML转义符号 HTML常用符号: 显示一个空格 &nbsp; &#160; < 小于 &lt; &#60; > 大于 &gt; &#62; & &符号
全栈程序员站长
2022/07/15
3.2K0

相似问题

localStorage值不会自动更新

30

用AlpineJS实现数据采集

12

localStorage值不会自动更新

25

如何显示localStorage数据

28

如何重用AlpineJs数据?

120
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文