gpt4 book ai didi

neural-network - 如何在 TensorFlow 中的图中构建一个带有循环的简单 RNN?

转载 作者:行者123 更新时间:2023-12-04 06:48:06 24 4
gpt4 key购买 nike

我刚刚开始使用 TensorFlow,并且正在尝试实现一个非常简单的 RNN。 RNN 有 x作为输入,y作为输出,只包含一个采用 x 的层它是以前的输出作为输入。这是我想到的那种事情的图片:

A simple RNN

问题是,我看不到任何通过 TensorFlow API 构建包含循环的图形的方法。每当我定义张量时,我都必须指定它的输入是什么,这意味着我必须已经定义了它的输入。所以有一个先有鸡还是先有蛋的问题。

我什至不知道想要定义一个带有循环的图是否有意义(首先计算什么?我是否必须定义 softmax 节点的初始值?)。我尝试使用变量来表示先前的输出,然后手动取 y 的值。并在每次输入训练样本后将其存储在变量中。但这会很慢,除非有办法在图表本身中表示这个过程(?)。

我知道 TensorFlow 教程展示了 RNN 的示例实现,但他们作弊并将 LSTM 模块从已经包含循环的库中拉出。总体而言,这些教程有助于引导您了解如何构建某些东西,但它们可以更好地解释这个野兽是如何工作的。

那么,TensorFlow 专家们,有没有办法构建这个东西呢?我该怎么做呢?

最佳答案

事实上,所有机器学习框架中的前向和后向传递都假设您的网络没有循环。实现循环网络的一种常见方法是将其及时展开几个步骤(例如 50 个步骤),从而将具有循环的网络转换为没有循环的网络。

例如,在您所指的文档中:

https://www.tensorflow.org/versions/r0.7/tutorials/recurrent/index.html

他们提到

In order to make the learning process tractable, it is a common practice to truncate the gradients for backpropagation to a fixed number (num_steps) of unrolled steps.



这实际上意味着他们将创建 num_steps LSTM 单元,其中每个单元将值 x 作为输入对于当前时间步长,以及 的输出上一个 LSTM 模块。
BasicLSTMCell他们使用并且您认为有循环实际上没有循环。 LSTM 单元只是单个 LSTM 步骤的实现(一个具有两个输入 [输入和内存] 和两个输出 [输出和内存] 的 block ,并使用门从输入计算输出),而不是整个 LSTM 网络。

关于neural-network - 如何在 TensorFlow 中的图中构建一个带有循环的简单 RNN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35464097/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com