首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >理解Keras约束

理解Keras约束
EN

Stack Overflow用户
提问于 2022-11-02 18:11:59
回答 1查看 30关注 0票数 0

我有一个关于tf.keras.constraints方法的问题。

代码语言:javascript
运行
AI代码解释
复制
(1)

class WeightsSumOne(tf.keras.constraints.Constraint):
      def __call__(self, w):
          return tf.nn.softmax(w, axis=0)

output = layers.Dense(1, use_bias=False, 
                      kernel_constraint = WeightsSumOne())(input)
                                       


(2)

intermediate = layers.Dense(1, use_bias = False)
intermediate.set_weights(tf.nn.softmax(intermediate.get_weights(), axis=0))

(1)和(2)执行相同的过程吗?

我问这个问题的原因是Keras文档说

,它们是每个变量的投影函数,在每次梯度更新之后(当使用fit()时)应用到目标变量。(https://keras.io/api/layers/constraints/)

与(1)不同,我认为在(2)的情况下,约束是在每次梯度更新之前应用的。

在我看来,(1)和(2)的权重梯度是不同的,因为在第二种情况下,在梯度计算之前应用了softmax,而在第一种情况下,在梯度计算之后应用了softmax。

如果我错了,如果你指出错误的部分,我将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-02 20:05:43

他们不一样。

在第一种情况下,约束被应用于weights,但在第二种情况下,它应用于dense层的输出(在与输入相乘之后)。

在第一种情况下,

构造了一个模型:

代码语言:javascript
运行
AI代码解释
复制
inp = keras.Input(shape=(3,5))
out = keras.layers.Dense(1, use_bias=False, kernel_initializer=tf.ones_initializer(), 
         kernel_constraint= WeightsSumOne())(inp)

model = keras.Model(inp, out)
model.compile('adam', 'mse')

假人跑,

代码语言:javascript
运行
AI代码解释
复制
inputs = tf.random.normal(shape=(1,3,5))
outputs = tf.random.normal(shape=(1,3,1))
model.fit(inputs,outputs, epochs=1)

检查model的层权值

代码语言:javascript
运行
AI代码解释
复制
print(model.layers[1].get_weights()[0])
#outputs
array([[0.2],
    [0.2],
    [0.2],
    [0.2],
    [0.2]]

在第二种情况下构造模型

代码语言:javascript
运行
AI代码解释
复制
inp = keras.Input(shape=(3,5))

out = keras.layers.Dense(1, activation='softmax', use_bias=False,
         kernel_initializer=tf.ones_initializer())(inp)

model1 = keras.Model(inp, out)
model1.compile('adam', 'mse')
#dummy run
model1.fit(inputs,outputs, epochs=1)

检查model1的层权,

代码语言:javascript
运行
AI代码解释
复制
print(model1.layers[1].get_weights()[0])
#outputs
array([[1.],
   [1.],
   [1.],
   [1.],
   [1.]],

我们可以看到layer weight of modellayer weight of model1的softmax

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

https://stackoverflow.com/questions/74297504

复制
相关文章
Excel 如何保存文件为 UTF-8 CSV 格式
如果你的 CSV 在 Excel 在默认打开的时候是简体中文的,但是你在保存的时候没有保存为 UTF-8 的格式,那么你文件中的简体中文可能会显示为乱码。
HoneyMoose
2020/09/03
3.8K0
Excel 如何保存文件为 UTF-8 CSV 格式
SparkSQL保存DataFrame为CSV文件
ReadShipMMSITwo package com.xtd.file import java.io.{ BufferedWriter, File, FileWriter} import java.util import com.xtd.entity.RouteLine import com.xtd.example.SparkOpenGIS import org.apache.spark.rdd.RDD import org.apache.spark.sql.{DataFrame, Dataset,
静谧星空TEL
2021/04/27
2.7K0
SparkSQL保存DataFrame为CSV文件
解决CSV文件中长数字以科学记数格式保存问题
源文件(xlsx格式)中的单元格格式设置为「文本」,默认为「常规」,这是因为「常规」格式存在: 纯数字(位数 ≥ 12)自动转换为「科学记数」 格式;如 123456789012 转化为 1.23457+11 输入的内容含有数字与字母e,且e处在第三位上,e后面为纯数字,也会自动转换为 「科学记数」格式,如输入颜色值 123e45 会转换为 1.23E+47, 输入1234e5 会转换为 1.23E+08 以「文本」格式保存的csv文件,用Excel格式打开,看到的仍可能是「科学记数」的方式,但以「文本编
Jace
2018/08/01
6.1K0
MySQL 查询结果保存为CSV文件
执行后,会把指定表中记录数据导出到c:/test.csv文件中。每个字段以,(逗号)分隔,字段内容是字符串的以”(双引号)包围,每条记录使用\r\n换行。如图所示
前端皮皮
2020/11/26
5.5K0
MySQL 查询结果保存为CSV文件
什么是CSV文件以及如何打开CSV文件格式
大家好,又见面了,我是你们的朋友全栈君。 What is a .csv file? CSV stands for Comma Separated Values. A CSV file is a pla
全栈程序员站长
2022/09/16
6.6K0
Matlab保存数据到csv文件的方法分享
一个同学咨询了一个问题,如何把matlab变量区的数据保存到csv文件里面,故此分享一下Matlab保存数据到csv文件的方法。csv其实也是一个txt,只不过csv是带特定格式的txt而已,举个例子,编辑一个txt文件,内容如下
用户9925864
2022/07/27
6.3K0
Matlab保存数据到csv文件的方法分享
csv文件格式说明[通俗易懂]
csv文件应用很广泛,历史也很悠久。有很多种类型的csv格式,常用的是rfc 4180定义的格式。
全栈程序员站长
2022/09/20
1.4K0
【python】使用csv库以字典格式读写csv文件
1、使用csv.DictWriter()写入字典格式的数据 import csv with open('test.csv', 'w', newline='') as csvfile: fieldnames = ['first_name', 'last_name'] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() writer.writerow({'first
西西嘛呦
2020/08/26
1.8K0
【python】使用csv库以字典格式读写csv文件
短短几行代码将数据保存CSV和MySQL
数据我就按比较常见的列表嵌套字典来演示了,这种数据结构也是在各个场景下经常用到的数据结构[{},{},{}…]
福贵
2020/02/17
2.1K0
如何使用Python将图像转换为NumPy数组并将其保存到CSV文件?
Python 是一种功能强大的编程语言,具有大量的库和模块。其中一个库是 NumPy,它用于数值计算和处理大型多维数组和矩阵。另一个用于Python图像处理的流行库是Pillow,它是Python Imaging Library(PIL)的一个分支。
很酷的站长
2023/08/11
9110
如何使用Python将图像转换为NumPy数组并将其保存到CSV文件?
爬取豆瓣电影详细数据,保存为CSV文件
爬取时间:2020-03-12 爬取难度:★★☆☆☆☆ 请求链接:https://movie.douban.com/top250 以及每部电影详情页,图片 爬取目标:爬取榜单上每一部电影详情页的数据,保存为 CSV 文件 涉及知识:request、urllib、bs4、CSV 和二进制数据储存、列表操作 一、循环爬取网页模板 打开豆瓣电影top榜单,请求地址为:https://movie.douban.com/top250 通关观察,我们可以发现每页展示25条电影信息,多次翻页我们可以观察到u
不温卜火
2020/10/28
5.5K0
爬取豆瓣电影详细数据,保存为CSV文件
python中如何打开csv文件_python如何读取csv文件
python如何读取csv文件,我们这里需要用到python自带的csv模块,有了这个模块读取数据就变得非常容易了。
全栈程序员站长
2022/09/16
8.3K0
python中如何打开csv文件_python如何读取csv文件
Python读写CSV格式文件
CSV(Comma Separated Values)格式的文件常用于电子表格和数据库中内容的导入和导出。Python标准库csv提供的reader、writer对象和DictReader和DictWriter类很好地支持了CSV格式文件的读写操作。 >>> import csv >>> with open('test.csv', 'w', newline='') as fp: test_writer = csv.writer(fp, delimiter=' ', quotechar='"') #创建wr
Python小屋屋主
2018/04/16
1.1K0
python 读写csv格式的文件
python在它的标准库中包含了csv模块。 例子环境 python3.4 win7 32位
py3study
2020/01/10
9700
Python操作CSV格式文件
参考文档:https://docs.python.org/3.6/library/csv.html
全栈程序员站长
2022/09/16
1K0
Python操作CSV格式文件
CSV文件
CSV文件:Comma-Separated Values,中文叫,逗号分隔值或者字符分割值,其文件以纯文本的形式存储表格数据。该文件是一个字符序列,可以由任意数目的记录组成,记录间以某种换行符分割。每条记录由字段组成,字段间的分隔符是其他字符或者字符串。所有的记录都有完全相同的字段序列,相当于一个结构化表的纯文本形式。 用文本文件、EXcel或者类似与文本文件的都可以打开CSV文件。
狼啸风云
2020/02/11
2.7K0
导出CSV格式
/** * 导出数据格式为csv */ function export_to_csv($data = array(), $title = array(), $filename=null) { if(empty($filename)) { $filename = date('Ymd'); } header("Content-type:text/csv"); header("Accept-Ranges:bytes"); header("Content
苦咖啡
2018/04/28
1.9K0
一、通过requests库爬取数据并保存为csv文件
此系列第一篇呀 一、选择数据源 网址:https://wp.m.163.com/163/page/news/virus_report/index.html?nw=1&anw=1 好了知道上面的我们就可
不温卜火
2020/10/28
1.6K0
一、通过requests库爬取数据并保存为csv文件
点击加载更多

相似问题

TypeError:“tuple”对象在尝试调用方法时不可调用

10

类方法TypeError "Int对象不可调用“

16

TypeError:对象不可调用

21

TypeError:“a”对象不可调用

11

TypeError TypeError:“NoneType”对象不可调用

10
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档