Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >sin的延迟回波-不能复制Tensorflow在Keras中的结果

sin的延迟回波-不能复制Tensorflow在Keras中的结果
EN

Stack Overflow用户
提问于 2017-10-25 08:45:36
回答 1查看 318关注 0票数 3

我正在Keras试验LSTM,几乎没有运气。在某一时刻,我决定缩小到最基本的问题,以便最终取得一些积极的结果。

然而,即使对于最简单的问题,我也发现Keras无法收敛,而在Tensorflow中实现相同的问题则提供了稳定的结果。

我不愿意仅仅切换到Tensorflow,而不理解为什么Keras总是在我尝试的任何问题上出现分歧。

我的问题是延迟回波的多到多序列预测,例如:

蓝线是一个网络输入序列,红色虚线是一个期望输出。

实验是受此存储库的启发,也由此产生了可行的Tensorflow溶液。下面是我的代码的相关摘录,我的最小可复制示例的完整版本是可用的这里

Keras模型:

代码语言:javascript
运行
AI代码解释
复制
model = Sequential()
model.add(LSTM(n_hidden,
               input_shape=(n_steps, n_input),
               return_sequences=True))
model.add(TimeDistributed(Dense(n_input, activation='linear')))
model.compile(loss=custom_loss,
              optimizer=keras.optimizers.Adam(lr=learning_rate),
              metrics=[])

Tensorflow模型:

代码语言:javascript
运行
AI代码解释
复制
x = tf.placeholder(tf.float32, [None, n_steps, n_input])
y = tf.placeholder(tf.float32, [None, n_steps])

weights = {
    'out': tf.Variable(tf.random_normal([n_hidden, n_steps], seed = SEED))
}
biases = {
    'out': tf.Variable(tf.random_normal([n_steps], seed = SEED))
}
lstm = rnn.LSTMCell(n_hidden, forget_bias=1.0)
outputs, states = tf.nn.dynamic_rnn(lstm, inputs=x,
                                    dtype=tf.float32,
                                    time_major=False)

h = tf.transpose(outputs, [1, 0, 2])
pred = tf.nn.bias_add(tf.matmul(h[-1], weights['out']), biases['out'])
individual_losses = tf.reduce_sum(tf.squared_difference(pred, y),
                                  reduction_indices=1)
loss = tf.reduce_mean(individual_losses)
optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate) \
  .minimize(loss)

我声称代码的其他部分(data_generationtraining)是完全相同的。但是,对Keras的学习进展提前停止,并产生了令人不满意的预测。库和示例预测的logloss图附在下面:

Tensorflow训练模型的日志丢失:

Keras培训模型的日志丢失:

从图中读取并不容易,但是Tensorflow到达target_loss=0.15,在大约10k批之后就停止了。但是Keras耗尽了所有13k批到loss的时间,大约只有1.5。在一个单独的实验中,Keras正在运行100 K批,它没有在1.0周围进一步停滞。

下图包括:黑线模型输入信号,绿色虚线地面真实输出,红线获取模型输出.

Tensorflow训练模型的预测:

Keras训练模型的预测:

谢谢您的建议和见解,亲爱的同事们!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-30 10:44:41

好吧,我已经解决了这个问题。Keras实现现在也稳定地收敛到一个合理的解决方案:

实际上,这些模型并不完全相同。您可以格外小心地检查问题中的Tensorflow模型版本,并亲自验证实际的Keras等效值是否列在下面,而不是问题中所述的:

代码语言:javascript
运行
AI代码解释
复制
model = Sequential()
model.add(LSTM(n_hidden,
               input_shape=(n_steps, n_input),
               return_sequences=False))
model.add(Dense(n_steps, input_shape=(n_hidden,), activation='linear'))
model.compile(loss=custom_loss,
              optimizer=keras.optimizers.Adam(lr=learning_rate),
              metrics=[])

我会详细说明的。这里的可行解决方案使用最后一列大小为n_hidden的LSTM作为中间激活,然后提供给Dense层。

所以,在某种程度上,这里的实际预测是由常规感知器做的。

从附加问题的推理示例中可以看出,原始Keras解决方案中的一个额外的注释来源是错误的。我们在那里看到,早期的时间戳完全失败,而后期的时间戳几乎是完美的。这些较早的时间戳对应于当LSTM只是在新窗口上初始化并且不了解上下文时的状态。

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

https://stackoverflow.com/questions/46937898

复制
相关文章
如何使NSLog只在Debug模式下有效
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/50757136
用户1451823
2018/09/13
7690
【Groovy】编译时元编程 ( 编译时方法拦截 | 在 MyASTTransformation#visit 方法中找到要拦截的方法 )
方法中 , 其中 ASTNode[] nodes 参数是 AST 语法树根节点数组 , 每个数组元素都是一个 ModuleNode 对应一个 Groovy 脚本 ;
韩曙亮
2023/03/30
3170
在请求目标中找到无效字符。有效字符在RFC 7230和RFC 3986中定义
  今天在使用Tomcat8部署完成项目做测试的时候,发现有的接口会报错400,后端提示在请求目标中找到无效字符。有效字符在RFC 7230和RFC 3986中定义
彼岸舞
2020/11/05
14.4K6
在请求目标中找到无效字符。有效字符在RFC 7230和RFC 3986中定义
大牧絮叨设计模式:工厂方法模式
工厂方法模式是一种创建模式,又被称为虚拟构造子模式(Virtual Constructor)或者多态性工厂模式(Polymoriphoic Factory)。工厂方法模式是目标是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。
大牧莫邪
2019/07/16
4070
大牧絮叨设计模式:工厂方法模式
某种矿机的预防脚本
iptables -I OUTPUT -p tcp -m multiport --dport 80,443 -m string --string "tor2web.io" --algo bm -j DROP
用户1168904
2021/05/17
7490
文本的词嵌入是什么?
词嵌入(Word embeddings)是一种单词的表示形式,它允许意义相似的单词具有类似的表示形式。
StoneDemo
2018/02/11
4.3K0
文本的词嵌入是什么?
RedHat Linux文本模式下乱码解决方法
如果在安装RedHat Linux时选择中文未缺省语言,在文本模式下会出现乱码情况,对于在CLI(command-line interface,命令行界面)方式下调试程序时诸多不便,因为出错信息全是乱码,下面说明乱码问题如何解决:
用户8710643
2021/06/11
2K0
使用 Python 拆分文本文件的最快方法是什么?
在 Python 中拆分文本文件可以通过多种方式完成,具体取决于文件的大小和所需的输出格式。在本文中,我们将讨论使用 Python 拆分文本文件的最快方法,同时考虑代码的性能和可读性。
很酷的站长
2023/02/18
2.6K0
使用 Python 拆分文本文件的最快方法是什么?
文本在计算机中的表示方法总结
本文为 AI 研习社社区用户 @Dendi 独家投稿内容,欢迎扫描底部社区名片访问 @Dendi 的主页,查看更多内容。
AI研习社
2019/10/29
3.1K0
文本在计算机中的表示方法总结
IE的浏览器模式、文本模式
IE的浏览器模式,用于切换IE针对该网页的默认文本模式、对不同版本浏览器的条件注释解析、决定请求头里userAgent的值。它在浏览器发出请求之前就已经确定,网站没有办法修改这个值。它代表的是用户以何种浏览器访问网站。
菜的黑人牙膏
2019/01/21
1.3K0
flutter - 方法 '[]'在null上被调用,但在inApp中有效
这意味着检索数据需要很短的时间, 试试这个。数据为空时,它将在短时间内通过进度指示器
徐建国
2021/08/03
9840
如何学习 React - 有效的方法
React 是一个免费的开源前端 JavaScript 库,用于通过将您的应用程序划分为更小的组件来构建复杂的用户界面。它由 Facebook 和开发者社区维护。
玖柒的小窝
2021/09/14
5.4K0
但是,在通过移动数组的上升周期中找到指定元素
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/117323.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/06
3970
设计模式(1)—什么是设计模式?设计模式的六大原则是什么?
软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。设计模式使代码开发真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。只有夯实地基搭好结构,才能盖好坚壮的大楼。也是我们迈向高级开发人员必经的一步。即12字真言:设计模式是设计经验的总结
AlbertYang
2020/09/08
6040
影响FMEA有效应用的因素是什么?
在制造业和工业生产中,FMEA(潜在失效模式及后果分析)是一种常见的质量管理工具,用于识别和预防潜在的故障和缺陷。但是,想要有效的应用FMEA并非易事,这其中需要考虑多种因素,下面我们来详细了解一下。
用户9972271
2023/04/18
3290
野生码农的逆袭之路:在跨界中找到自我
本文由CDA作者库成员HarryZhu原创,并授权发布。 CDA作者库凝聚原创力量,只做更有价值的分享。 Day Job and Night Job 我非常认同《黑客与画家》里的 Paul Graham 说的一句话:码农需要一个 day job for food,也需要一个 night job for fun。和格雷厄姆不同的是,我的night job不是一个画家,而是一个作家,是的,一个技术专栏的撰稿人。通常,晚餐之后,刷一遍自己的 Feedly 和 GitHub,搞搞黑科技,这就是一种
CDA数据分析师
2018/02/24
1.2K0
野生码农的逆袭之路:在跨界中找到自我
浅谈在ASP.NET中数据有效性校验的方法
作为一名程序员,一定要对自己编写的程序的健壮性负责,因此数据的校验无论在商业逻辑还是系统实现都是必不可少的部分。
Java架构师必看
2021/03/22
9700
在Kubernetes有效使用CoreDNS
作者:InfraCloud 技术领导、开源贡献者 Sanket Sudake。客座文章最初在InfraCloud 的博客[1]上发表。
CNCF
2021/07/07
9220
在Dubbo中,模板方法模式 用的真6!
Dubbo 是阿里的开源框架,后面捐献给了Apache,所以现在都叫Apache Dubbo,但是在日常中,很多人也更喜欢简称Dubbo。Apache Dubbo 是一款微服务框架,为大规模微服务实践提供高性能 RPC 通信、流量治理、可观测性等解决方案, 涵盖 Java、Golang 等多种语言 SDK 实现。
田维常
2022/11/25
6210
在Dubbo中,模板方法模式 用的真6!
[Oracle] 导出到文本的方法
Oracle 将查询结果导出到文本的方法。 Oracle 表在直接导出时,格式容易很混乱,不易读,比如下面这样: 为了使导出的文本可读性强,可以增加以下参数: set line 1000
tonglei0429
2021/09/08
6840

相似问题

在集合中查找最不同的元素

20

获取MySQL中最不同的记录

20

需要帮助计算最不同的书籍

13

根据不同的列选择最不同的产品

10

选择产品中最不同的项目

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档