问题标签 [recurrent-neural-network]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2213 浏览

python - model.fit 上的维度数错误

我正在尝试运行这个 SimpleRNN:

错误出现在 model.fit 上,如下所示:

错误告诉我它的维度数错误,它应该是 3,它只有 2。它指的是什么维度?

0 投票
1 回答
2686 浏览

python - 如何在张量流中为双向 RNN 使用可变批量大小

似乎 tensorflow 不支持双向 RNN 的可变批量大小。在此示例中,sequence_length与 绑定batch_size,这是一个 Python 整数:

如何使用不同的批量大小进行训练和测试?

0 投票
0 回答
3117 浏览

python - TensorFlow 中的 Char-RNN

我正在尝试让一个简单的 RNN 在 tensorflow 中工作,但我遇到了几个问题。

我现在要做的是简单地运行 RNN 的前向传递,并将 LSTM 作为其单元类型。

我已经抓取了一些新闻文章,并希望将它们输入 RNN。我已将由所有文章的串联组成的字符串拆分为字符并将字符映射为整数。然后我对这些整数进行了一次热编码。

现在是 tensorflow 代码。我想遍历数据中的所有字符并为每个前向传递使用 25 个字符。我的第一个问题是关于批量大小,如果我想按照我刚才提到的方式执行此操作,我的批量大小是 1,对吗?因此,与输入中的一个字符相对应的每个向量都具有 [1,vocab_size] 形状,并且我的输入中有 25 个这些向量。所以我使用了以下张量:

我必须创建最后一个张量,因为那是 rnn 函数所期望的格式。

然后我遇到了变量范围的问题,我收到以下错误:

而且我不确定为什么会出现这个错误,因为我实际上没有在我的代码中指定任何变量,这些变量只在 rnn 和 rnn_cell 函数中创建,有人可以告诉我如何解决这个错误吗?

我目前遇到的另一个错误是类型错误,因为我的输入是 tf.int32 类型,但在 LSTM 内部创建的隐藏层是 tf.float32 类型,而 rnn_cell.py 代码中的线性函数连接起来这两个张量并将它们乘以权重矩阵。为什么这是不可能的,我假设输入是单热编码并因此具有 int32 类型是相对常见的?

一般来说,这种方法在训练 char-rnns 时是否具有 1 个标准的批量大小?我只看过 Andrej Karpathy 的代码,他在基本的 numpy 中训练了一个 char-rnn,他使用相同的程序,他只是以长度为 25 的序列遍历整个文本。这里是代码:https:// gist.github.com/karpathy/d4dee566867f8291f086

0 投票
1 回答
148 浏览

theano - Theano教程中RNN的参数

我正在关注这个关于 RNN 的 Theano 教程。( http://deeplearning.net/tutorial/rnnslu.html ) 但我有两个问题。第一的。在本教程中,递归函数如下:

def recurrence(x_t, h_tm1): h_t = T.nnet.sigmoid(T.dot(x_t, self.wx) + T.dot(h_tm1, self.wh) + self.bh) s_t = T.nnet.softmax(T.dot(h_t, self.w) + self.b) return [h_t, s_t]

我为什么不在 h_t 中加上 h0 ?(即h_t = T.nnet.sigmoid(T.dot(x_t, self.wx) + T.dot(h_tm1, self.wh) + self.bh + self.h0)

二、为什么outputs_info=[self.h0, None]?我知道 output_info 是初始化结果。所以我认为outputs_info=[self.bh+self.h0, T.nnet.softmax(T.dot(self.bh+self.h0, self.w_h2y) + self.b_h2y)]

0 投票
1 回答
3478 浏览

python - ATIS(Airline Travel Information System)数据集的结构是什么

当我使用 ATIS(航空公司旅行信息系统)数据集(http://lisaweb.iro.umontreal.ca/transfert/lisa/users/mesnilgr/atis/)进行循环神经网络研究时。我对它的结构感到困惑。

例如,使用data = pickle.load(open("./dataset/atis.fold0.pkl", "rb"),encoding='iso-8859-1')加载atis.fold0.pkl后,我使用print (np.shape(data_train))获取(4,). 我认为data[0]是训练集,data[1]是有效集,data[2]是测试集,data[3]是dict。

但是当我使用时print(np.shape(data[0])),我得到了(3, 3983)。我想知道为什么我在其中得到 3 行?这三行有什么区别。

文件 atis.fold0.pkl、atis.fold1.pkl、atis.fold2.pkl、atis.fold3.pkl、atis.fold4.pkl 有什么区别?

0 投票
1 回答
603 浏览

neural-network - 损失停止减少时训练 RNN 模型的一般规则

我有一个 RNN 模型。大约 10K 次迭代后,损失停止下降,但损失还不是很小。这是否总是意味着优化被困在局部最小值中?

一般来说,我应该采取什么行动来解决这个问题?添加更多训练数据?更改不同的优化方案(现在是 SGD)?还是其他选择?

非常感谢!

JC

0 投票
5 回答
12495 浏览

machine-learning - LSTM 后跟均值池化

我正在使用 Keras 1.0。我的问题与这个问题相同(如何在 Keras 中实现平均池化层),但那里的答案对我来说似乎还不够。

我想实现这个网络: 在此处输入图像描述

以下代码不起作用:

如果我不设置return_sequences=True,我在调用时会收到此错误AveragePooling1D()

否则,我在调用时会收到此错误Dense()

0 投票
1 回答
804 浏览

neural-network - TensorFlow 翻译培训——什么时候停止?

我正在使用来自 Google 的 Tensorflow 的示例。我能够很好地运行它,但训练似乎并没有停止,因为它有一个while True:循环。参考: translate.py

考进train()

0 投票
3 回答
1341 浏览

python - 在 Tensorflow 中混合前馈层和循环层?

有没有人能够在 Tensorflow 中混合前馈层和循环层?

例如:输入->conv->GRU->线性->输出

我可以想象一个人可以定义他自己的带有前馈层的单元格,并且没有可以使用 MultiRNNCell 函数堆叠的状态,例如:

细胞 = tf.nn.rnn_cell.MultiRNNCell([conv_cell,GRU_cell,linear_cell])

这将使生活变得更加轻松......

0 投票
2 回答
903 浏览

python - 训练每个后续单词时,用于语音识别的张量流 LSTM 减慢速度

所以我正在尝试使用 tensorflows LSTM 来识别口语。然而,在每个训练词通过 LSTM 之后,下一个词需要更长的时间来处理(特别是通过反向传播计算梯度并将其应用于网络)。我目前正在使用不支持 CUDA 的 iMac,因此我必须使用 CPU 而不是 GPU(一旦我能够使用,我将切换到 GPU)。

我正在使用 Python-2.7 进行编程

我使用的词汇量非常小,8 个词类,每个词有 10 个训练示例,每个词都是孤立的(不是句子的一部分,只是一个词)。

每个词都被预处理成梅尔频率倒谱系数,然后使用 Kmeans 对它们进行聚类,K = 100。因此,LSTM 的输入是一次输入一个项目的 float32 列表。

LSTM 中肯定会出现减速,因为从列表中获取每个项目并将其传递给 LSTM 所花费的时间对于每个项目大致保持不变。每次传递给 LSTM 的每个项目的大小也是相同的(更长的单词只是有更长的项目列表);然而,随着训练的继续,即使是更短的单词(列表中的项目更少)仍然需要越来越长的时间。

我正在使用梯度下降和反向传播来训练网络,并尝试将梯度剪裁到 10 个时间步或根本不剪裁,这没有区别。

LSTM 实例化为:

在 LSTM 之后,我有一个 softmax 层;使用交叉焓损失将其输出与表示正确输出的一个热向量进行比较。

管道 sudo 代码:

最后,如果我不清楚我的问题是什么,这里是我网络的时间安排:

如果有人对为什么需要越来越长的时间有任何想法