问题标签 [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.
python - 使用 Keras 编译 LSTM 时出现断言错误
我有以下代码:
但是每次我运行它时,我都会在该行出现错误
其中指出:
有谁知道那是什么意思?
theano - 错误的维数:预期为 0,得到 1,形状为 (1,)
我正在使用 vanilla rnn 进行单词级语言建模,我能够训练模型,但由于一些奇怪的原因,我无法从模型中获得任何样本/预测;这是代码的相关部分:
我收到错误:“TypeError:('在索引 0(基于 0)处名称为“train.py:94”的 theano 函数的错误输入参数','错误的维数:预期为 0,形状为 1(1 ,).')”
现在这对应于以下行(在 predict_model 中):
即使花了几个小时,我也无法理解在以下情况下怎么可能出现尺寸不匹配:
当我做 train_set_x[index] 时,我得到(4, 109) fmatrix 类型的“ x ”张量可以保持(这是在train_model中发生的情况)但是当我做 voc[index] 时,我得到(1, 109),这也是一个矩阵,但' x '不能容纳这个,为什么?!
任何帮助都感激不尽。
谢谢 !
machine-learning - 软注意力与硬注意力
在这篇博文《循环神经网络的不合理有效性》中,Andrej Karpathy 提到了基于神经网络的机器学习的未来方向:
注意力的概念是神经网络中最近最有趣的架构创新。[...] 内存寻址的软注意方案很方便,因为它使模型保持完全可微分,但不幸的是,由于所有可以处理的东西都被处理(但很柔和),因此牺牲了效率。可以将其视为在 C 中声明一个不指向特定地址的指针,而是定义整个内存中所有地址的完整分布,并且取消引用指针返回指向内容的加权和(这将是一个昂贵的手术!)。这促使多位作者将软注意力模型交换为硬注意力模型,其中一个人对特定的内存块进行采样以关注(例如 某些存储单元的读/写操作,而不是在某种程度上从所有单元读/写)。这个模型在哲学上更具吸引力、可扩展性和效率,但不幸的是它也是不可微的。
我想我理解了指针隐喻,但究竟什么是注意力,为什么难区分?
我在这里找到了关于注意力的解释,但仍然对软/硬部分感到困惑。
machine-learning - 如何在 tensorflow 中构建基于字符的 seq2seq 模型
TensorFlow 中现有的 seq2seq 模型需要进行哪些更改,以便我可以使用字符单元而不是现有的单词单元来执行 seq2seq 任务?这对于预测性 ext 应用程序来说是一个很好的配置吗?
此任务可能需要修改以下函数签名:
除了减少输入输出词汇之外,实现这样的字符级 seq2seq 模型还需要哪些其他参数更改?
machine-learning - (双向)RNN 用于简单的文本分类
TL;DR:双向 RNN 对简单的文本分类有用吗?填充是邪恶的吗?
在我最近的工作中,我为同一任务创建了一个 LSTM 模型和一个 BLSTM 模型,即文本分类。LSTM 模型做得很好,但我决定试一试 BLSTM,看看它是否可以进一步提高准确性。最后,我发现 BLSTM 的收敛速度要慢得多,而且令人惊讶的是,它过拟合了,尽管我以 50% 的概率应用了 dropout。
在实现中,我对 LSTM 和 BLSTM 都使用了展开的 RNN,期望更快的训练。为了满足要求,我手动将输入文本填充到固定长度。
假设我们有一个句子“我早上睡得很晚,错过了对 Nebuchadnezzar 的采访”,然后在转换为预训练词嵌入的索引数组时在其末尾填充 0。所以我们得到类似 [21, 43, 25, 64, 43, 25, 6, 234, 23, 0, 0, 29, 0, 0, 0, ..., 0]。请注意,“th”(应该是“the”)是一个错字,而且“Nebuchadnezzar”这个名字太少见了,所以它们都没有出现在词汇表中,所以我们也用 0 替换它,这对应于一个特殊的完整 -零词向量。
以下是我的反思:
有些人喜欢在将语料库输入 GloVe 或 Word2Vec 模型之前,将未知单词转换为特殊单词,如“< unk >”。这是否意味着我们必须首先构建词汇并将一些低频单词(根据Min计数设置)更改为“”,然后才能在培训前?是不是比在训练 RNN 的时候把未知词变成 0 或者只是去掉它们更好?
就我而言,输入 LSTM 或 BLSTM 网络的尾随 0 会使输出混乱。尽管没有来自外部的新信息,但单元状态仍会在随后的每个时间步中更新,因此最终单元的输出将受到长尾随 0 的严重影响。并且我相信,BLSTM 会受到更大的影响,因为它还会以相反的顺序处理文本,例如 [0, 0, 0, ..., 0, 321, 231],特别是如果我们设置初始忘记门到 1.0 以在开始时培养记忆。我看到很多人使用填充,但是如果文本被填充到很长的长度并且在 BLSTM 的情况下会不会造成灾难?
对这些问题有任何想法吗?:-o
python - Python - 从 MIDI 文件中提取数据
希望读取大量 MIDI 文件并将其数据提取到组中 - 滴答声(时间)、音高(音符)和速度(音量)。提取的数据将应用于循环神经网络以进一步生成音乐。
我一直在搜索库并找到python-midi。这是我的代码:
可以在此处或Granroth-Wilding 的网站上找到对不同事件类型的解释。我的目标值(滴答声、音高和速度)显示为 midi.NOteOn/OffEvent(tick=0, channel=0, data=[pitch, velocity])。
问题 1:
由于没有可用的教程或文档,经过一些测试后,我print pattern[0]
发现所有事件都发生在 tick == 0。当然,所有数据都可以通过对所有事件运行 for 循环来检索,我只是想知道是否存在通过提供其他参数(例如通道、音高等)来检索数据的任何功能。
问题 2: 显然那里有很多可用的 MIDI/音乐库。不是说 python-midi 不好,但如果你有更好的想法,请分享!最好附带一些适当的文档或支持,这对于 python-midi 是不存在的。我是这个领域的新手,希望得到一些建议。
machine-learning - RNN(循环神经网络)可以像普通神经网络一样训练吗?
训练 RNN 和简单的神经网络有什么区别?可以使用前馈和后向方法训练 RNN 吗?
提前谢谢!
neural-network - 在 Torch 中,如何修复训练时间中的预训练嵌入?
我正在尝试在预训练的词嵌入上训练 RNN。假设这些预训练嵌入保存在矩阵 E 中,我可以使用它来初始化 LookupTable:
如何强制模型在训练期间保持这些嵌入固定?
nlp - 为什么我们需要在循环神经网络中微调词嵌入?
在 theano 的关于RNN的教程中,最后一部分提到了
我们通过在每次更新后对其进行归一化来将词嵌入保留在单位球上:
我在网上搜索,只找到了论文Investigation of Recurrent-Neural-Network Architectures and Learning Methods for Spoken Language Understanding提到它是fine-tuning word embedding 在第3.5.1 章。
我不明白为什么我们可以微调词嵌入。 self.emb
是这个RNN模型的输入,对吧?我们如何改变输入值?
python - 循环神经网络 (LSTM) 的任意输入/输出长度
这是使用来自Neurolab Python 库的Elman Recurrent Neural Network的示例:
在这个例子中,它合并了 2 个单位长度的输入,也合并了2 个单位长度的输出。之后,它使用这些合并的数组训练网络。
首先,它看起来不像我从这里得到的模式:
我的主要问题是;
我必须用任意长度的 输入和输出来训练网络,如下所示:
- 任意长度输入到固定长度输出
- 固定长度输入到任意长度输出
- 任意长度输入到任意长度输出
此时你会想到:“你的答案是长短期记忆网络。”
我知道,但Neurolab很容易使用,因为它有很好的功能。特别是,它非常Pythonic。所以我坚持使用Neurolab Library来解决我的问题。但是,如果您向我推荐另一个具有更好LSTM功能的库,例如 Neurolab ,我会接受。
最后,我怎样才能为任意长度的输入和输出重新排列这个例子?
我对 RNN 和 LSTM 没有最好的理解,所以请解释一下。