- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
p_input
的形状 this LSTM Autoencoder对于"test.py"是(128,8,1);意思是 128 组 8 位数字。我正在尝试使用 4 组 25,000 个时间步长(基本上是 0 秒到 25,000 秒)使该模型适应基于时间序列的数据。我尝试将此数据集输入到形状为 (4,25000,1) 的 p_input
中,但没有出现任何错误。但是,当我运行脚本时,没有得到 iter 1: 0.01727, iter 2: 0.00983, ...
我没有从脚本中得到任何打印的反馈,所以我假设有什么东西阻碍了脚本。我还尝试将 batch_num
更改为 4 并将 step_num
更改为 25,000 直接添加到未经编辑的“test.py”文件中,结果相同,没有打印反馈。
我的想法是,在“test.py”中,p_inputs
计算tf.split
和tf.squeeze
花费的时间太长操作。另一个想法是,我可能需要增加 hidden_num
中隐藏的 LSTM 单元的数量和/或增加 epoch 的数量(iteration
)。此外,batch_num
可能必须大于 step_num
。我用 step_num = 4
和 batch_num = 25000
对“test.py”进行了尝试,脚本正常运行并打印了反馈。
让我知道您对阻止脚本运行的问题可能是什么的想法。
最佳答案
输入的第二个维度是网络为计算梯度而展开的次数 BPTT算法。
这个想法是通过将每个时间步“展开”为网络的新层,将循环网络(如 LSTM)转换为前馈网络。
当您一起提供整个时间序列(即 25000 个时间步长)时,您将展开网络 25000 次,也就是说,您将获得一个展开的前馈网络,其中包含 25000 层!!
因此,尽管我不知道为什么您没有收到任何错误,但问题可能与内存不足问题有关。您无法将 25000 层的变量放入内存。
当您必须处理较长的时间序列时,您需要将数据分成 block (比如 20 个时间步长)。您每次运行提供一个 block 。然后,在接下来的每次运行中,您需要使用上一次运行的最后状态恢复网络的初始状态。
我可以给你举个例子。您现在拥有的(出于实际原因我忽略了第三维)是一个 4x25000 的矢量,其形状如下所示:
--------------------- 25000----------------------
|
|
4
|
|
--------------------------------------------------
你现在必须把它分成这样的 block :
----20----- ----20----- ----20-----
| | | | | |
| | | | | |
4 | 4 | 4 | [...]
| | | | | |
| | | | | |
----------- ----------- -----------
您每次提供一个 4x20 的大块。然后,您的 LSTM 在每次卡盘之后的最终状态必须作为下一个卡盘的输入提供。
所以你的 feed_dict
必须是这样的:
feed_dict ={x: input_4_20},
state.c = previous_state.c,
state.h=previous_state.h}
参见 LM tutorial关于如何为下一次运行提供 LSTM 的状态的示例。
Tensorflow 提供了一些功能来自动执行此操作。检查Tensorflow DevSummit Tutorial有关更多信息,请访问 RNN API。我链接了解释所需功能的确切秒数。该函数是 tf.contrib.training.batch_sequences_with_states(...)
作为最后的建议,我建议您重新考虑您的任务。事实上,25000 的时间序列是一个非常长的序列,我担心即使是 LSTM 也无法管理如此长的过去依赖关系。我的意思是,当您处理该系列的第 24000 个元素时,LSTM 状态可能已经忘记了第一个元素的所有内容。在这些情况下,请尝试查看您的数据以了解您的现象的规模。如果您不需要一秒钟的粒度(即您的系列是高度冗余的,因为特征不会及时快速变化),请缩小您的系列以管理更短的序列。
关于python - 当脚本在更大的数据集上运行时,LSTM 自动编码器没有进展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45807858/
我想做的是,如果鼠标位于“下一个”按钮上,它会以慢速向右滚动,如果鼠标没有位于“下一个”按钮上,它会停止滚动? 这是我的尝试http://jsfiddle.net/mdanz/nCCRy/14/ $(
StyleCop 是一个很棒的视觉工作室小插件。但它不会向您显示实时提示或提供任何自动修复。 随之而来的是 reSharper 和 StyleCop for reSharper,这是理想的解决方案,但
我为我的MatchQuery使用了模糊性选项,但是我想将模糊性值设置为auto。有什么办法吗? 另外,对于完成建议程序,您可以将其设置为支持unicode,对于我的MatchQuery,有什么方法可以
我想从表中获取一行[字符串名称,字符串密码,int 某些内容]并将其映射到一个 User 对象,该对象具有 3 个属性,如上面的 getter 和 setter有什么方法可以自动完成吗?我考虑过反射,
我有一个像这样的方法:void m1(string str) 并且有一个像这样的类: public class MyClass { public bool b1 { set; get; }
我正在尝试使用 $rootScope 从一个 Controller 向另一个 Controller $broadcast 一些数据。 如果我使用像 ng-click 这样的触发器来运行将广播的功能,它
我考虑了很多关于是要使用完全自动化的缓存还是手动缓存。 我们的自动方法是一种解决方案,它可以挖掘数据库、查询和格式化每个潜在和 future 的数据请求,并将其保存到适当的缓存存储(内存缓存或基于磁盘
我的 CSS 必须使用过渡来更改,直到现在我都使用 div:hover 来实现。 当您单击另一个 div 时需要激活过渡,而不是当您将鼠标悬停在必须移动/更改的 div 上时。 我该怎么做? 谢谢 永
在我的应用程序中,我需要一些动画,但如果它已经设置了动画,则不需要持续时间。但我的问题是它会自动添加持续时间。 在这里你可以看到 2 个函数,第二个没有持续时间但它确实有持续时间(可能从 1 秒开始)
两年前,我需要制作一个工具,通过 POST 自动将 txt/csv 文件上传到我的 Web 服务器,然后使用 cronjob 通过 PHP 对其进行解析。 这有两次在每天午夜自动发生。尽管这行得通,但
请阅读下面程序中的评论: #include void test(char c[]) { c=c+2; //why does this work ? c--; printf("%
也许是个幼稚的问题,但是...... 确认或拒绝: 自动和静态存储持续时间的对象/变量的内存的存在是在编译时确定的,程序运行时失败的可能性绝对为零,因为没有足够的内存用于自动对象。 自然地,当自动对象
有没有什么方法可以自动获得类中属性更改的通知,而不必在每个 setter 中都编写 OnPropertyChanged? (我有数百个属性,我想知道它们是否已更改)。 安东建议 dynamic pro
我们在使用 Azure DevOps 的项目中采用了 gitflow 流程。我有以下场景: 当功能分支合并到 Develop 时,我想在完成拉取请求的同时执行压缩合并策略 当 Release 分支定期
我的网站上有一个评论部分,我将 html 编码的评论保存在我的数据库中。所以我添加了这条评论- "testing" `quotes` \and backslashes\ and html 并将其保存在
是否存在“ checkin 前 TFS 自动 checkout ”这样的功能,以便在我说“ checkin ”之前我不会 checkout 任何文件,例如以防我只是临时更改文件 - 这一直发生。 换句
我有一个运行在 Linux/Apache/Tomcat 堆栈上的网站,它需要每隔几个月自动脱机以进行服务器维护,这将持续任意时间。有哪些选项可以让 Apache 建立和取消“服务器维护”页面? 我需要
我经常在工作中创建文档,在公司内部,由于我们使用的首字母缩写词和缩写词的数量,我们几乎拥有自己的语言。因此,我厌倦了在发布文档之前手动创建首字母缩写词和缩写表,并且快速的谷歌搜索发现了一个可以有效地为
我希望在用户或宏将计算模式从自动更改为手动或手动更改为自动时运行代码。是否有为此触发的事件? (属性是 Application.Calculation 在 Excel 互操作中。) 使用 Excel
这个问题在这里已经有了答案: Repeat command automatically in Linux (13 个回答) 6年前关闭。 我想创建一个脚本来获取另一个文件夹中的所有文件夹名称。并为这些
我是一名优秀的程序员,十分优秀!