问题标签 [sequence-to-sequence]
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 嵌入层导致维度问题
我目前正在尝试在我的序列到序列自动编码器中包含一个嵌入层,使用 keras 功能 API 构建。
模型代码如下所示:
该模型是这样训练的:
X 和 y 具有形状 (n_samples, n_seq_len)
模型的编译完美无缺,而在尝试训练时,我总是会得到:
ValueError:检查目标时出错:预期 time_distributed_1 具有 3 个维度,但得到的数组具有形状(n_samples,n_seq_len)
有人有想法吗?
Keras版本是 2.2.4
Tensorflow 后端版本 1.12.0
tensorflow - 使用 LSTM 进行多元二进制序列预测
我正在研究一个序列预测问题,我在这方面没有太多经验,所以下面的一些问题可能很幼稚。
仅供参考:我在这里创建了一个关注 CRF 的后续问题
我有以下问题:
我想预测多个非独立变量的二进制序列。
输入:
我有一个包含以下变量的数据集:
- 时间戳
- A组和B组
- 在特定时间戳对应每个组的二进制信号
此外,假设以下情况:
- 我们可以从时间戳(例如一天中的小时)中提取额外的属性,这些属性可以用作外部预测器
- 我们认为 A 组和 B 组不是独立的,因此联合建模他们的行为可能是最佳的
binary_signal_group_A
并且binary_signal_group_B
是我想使用(1)它们过去的行为和(2)从每个时间戳中提取的附加信息来预测的 2 个非独立变量。
到目前为止我所做的:
问题:
这里的主要问题是:我如何让它工作,以便模型预测两组的下一个 N 序列?
此外,我想问以下问题:
- 预计 A 组和 B 组是互相关的,但是,尝试通过单个模型同时输出 A 和 B 序列是否有效,或者我应该拟合 2 个单独的模型,一个预测 A,另一个预测 B,但都使用历史 A 和 B 数据作为输入?
- 虽然我在模型中的最后一层是形状为 (None, 3, 2) 的 LSTM,但预测输出的形状为 (12, 3),而我预计它是 (12, 2) - 我在做什么这里错了,如果是这样,我将如何解决这个问题?
- 就输出 LSTM 层而言,在这里使用激活函数会不会是个好主意,比如 sigmoid?为什么/为什么不?
- 使用分类类型损失(二进制交叉熵)和度量(准确度)来优化序列是否有效?
- LSTM 模型在这里是最佳选择吗?有人认为 CRF 或某些 HMM 类型的模型在这里会更好吗?
非常感谢!
keras - 使用 CRF 进行多元二进制序列预测
这个问题是这个问题的延伸,它侧重于 LSTM 而不是 CRF。不幸的是,我对 CRF 没有任何经验,这就是我问这些问题的原因。
问题:
我想预测多个非独立组的二进制信号序列。我的数据集比较小(每组约 1000 条记录),所以我想在这里尝试一个 CRF 模型。
可用数据:
我有一个包含以下变量的数据集:
- 时间戳
- 团体
- 表示活动的二进制信号
group_a_activity
使用这个数据集,我想预测group_b_activity
它是 0 还是 1。
请注意,这些组被认为是互相关的,并且可以从时间戳中提取额外的特征——为简单起见,我们可以假设我们从时间戳中提取的只有 1 个特征。
到目前为止我所拥有的:
这是您可以在自己的机器上复制的数据设置。
在我们进入 CRF 部分之前,我怀疑我不能从多任务学习的角度来解决这个问题(通过一个模型预测 A 和 B 的模式),因此我将不得不预测每一个他们分别。
现在是 CRF 部分。我找到了一些相关的例子(这里是一个),但它们都倾向于根据先验序列预测单个类值。
这是我在这里使用 CRF 的尝试:
看来我确实设法让它工作,但我不确定我是否正确地接近它。我将在问题部分提出我的问题,但首先,这是使用keras_contrib
包的另一种方法:
问题:
我的主要问题是我是否正确构建了两个 CRF 模型。让我担心的是(1)没有很多关于 CRF 模型的文档,(2)CRF 主要用于预测给定序列的单个标签,(3)输入特征是嵌套的,(4)当以多任务方式使用,我不确定它是否有效。
我还有一些额外的问题:
- CRF 适合这个问题吗?
- 这两种方法(一种基于
pycrfuite
,一种基于keras_contrib
)有何不同,它们的优点/缺点是什么? - 从更一般的意义上说,将 CRF 和 LSTM 模型合二为一有什么好处(就像这里讨论的那样)
非常感谢!
keras - 序列到序列模型表现不佳
我正在尝试构建一个 seq2seq 自动编码器,它应该能够捕获序列的逻辑并能够从状态向量中重建它。我正在使用一些示例序列来测试模型是否能够执行非常简单的任务版本。为此,我有类似 '<><><>...' 或 '(.)(.)(.)...' 的序列。
该模型的基本代码如下所示:
编码器输入是由嵌入层转换为向量的整数编码字符。解码器输入与编码器输入相同,但在开头附加了一个开始标记,因此向右移动了一个。训练中使用的结果是 one-hot 编码的编码器输入。
现在模型的性能不是很好,只是一遍又一遍地预测第一个字符,所以对于:
原始:'<><><>...',预测:'<<<<<<...'
原始: '(。)(。)(。)...', 预言: '((((((...'
这只是一个培训问题还是我在这里犯了一些关键错误?
keras - Keras 序列到序列模型中的异常
我正在尝试使用 LSTM 和密集神经网络在 Keras 中构建序列到序列模型。编码器对输入进行编码,然后将编码状态和输入连接起来并馈送到解码器,该解码器是一个 lstm + 密集神经网络,可及时输出分类标签。下面是我的代码的样子
我遇到以下异常
我在哪里错了?
python - 如何从 Keras 中加载的模型构建编码器?
我有一个编码器-解码器模型,其结构与machinelearningmastery.com上的模型相同,带有num_encoder_tokens = 1949
、
num_decoder_tokens = 1944
和latent_dim = 2048
.
我想通过加载已经训练好的模型来构建编码器和解码器模型并尝试解码一些样本,但我得到了错误"Graph disconnected: cannot obtain value for tensor Tensor("input_1_1:0", shape=(?,?, 1949), dtype=float32) at layer "input_1". The following previous layers were accessed without issue: []
。
我的部分代码如下:
我想在这里做的是:
如果有人可以帮助我,我将不胜感激。
keras - 字符串数据类型的 keras pad_sequence
我有一个句子列表。我想为它们添加填充;但是当我像这样使用 keras pad_sequence 时:
结果是:
为什么它不能正常工作?
我想将此结果用作 ELMO 嵌入的输入,并且我需要字符串句子而不是整数编码。
machine-learning - 如何在 Pytorch 中获取双向 LSTM 的最后隐藏状态?
我不确定如何在 Pytorch 的双向 LSTM 中选择最后的隐藏/单元状态。
我如何使用 output
, hn
来cn
提取最后的前向和后向隐藏状态?
在反向 LSTM 的情况下,我想提取在反向处理整个序列后得到的隐藏状态。
keras - Keras如何控制是否使用教师强制?
我一直在阅读一些关于 Seq2Seq 的 Keras 代码,想知道在训练过程中是否使用了教师强制?我找不到任何参数?不过我可能错过了。
Keras中的老师默认强制吗?还是 Keras 本身还不支持它?
先感谢您!
tensorflow - Seq to Seq 模型训练
我有几个问题:
- 在具有不同输入长度的 seq to seq 模型中,如果您不使用注意掩码,RNN 可能最终会计算填充元素的隐藏状态值?因此,这意味着注意面具是强制性的,否则我的输出会出错?
- 那么如何处理不同长度的标签,假设我已经填充了批量传递它。现在我不希望我的填充元素对我的损失产生影响,那么我该如何忽略它呢?