machine-learning - 正确验证 allennlp 自动编码器
问题描述
我正在尝试使用类似于https://aclanthology.org/N19-1289.pdf的模型来实现allennlp
这包括两个并行输入模块,一个嵌入输入的嵌入模块和一个编码标签的并行模块。MSE 损失用于鼓励两者产生相同的编码。
然后嵌入标签的输出通过一个输出模块,该模块重新创建原始标签。我有这个工作,但是,我相信我没有正确实施验证。为了验证,嵌入输入的输出应该通过解码器,而不是标签编码器的输出。
我不确定如何实现这一点allennlp
,我需要检测模型是否正在前向方法中进行训练或验证,尽管两者都接收相同的参数(即同时提供 x 和 y)。
我目前的代码是
embedded = self._embedder(text)
if labels is not None:
encoded = self._encoder(labels)
decoded = self._decoder(encoded)
# compute loss / accuracy
encoder_loss = MSE(embedded, encoded)
reconstruction_loss = CDL(labels, decoded)
else:
decoded = self._decoder(embedded)
但我想做的是
embedded = self._embedder(text)
if labels is not None:
encoded = self._encoder(labels)
if training:
decoded = self._decoder(encoded)
else:
decoded = self._decoder(embedded)
# compute loss / accuracy
encoder_loss = MSE(embedded, encoded)
reconstruction_loss = CDL(labels, decoded)
else:
decoded = self._decoder(embedded)
我该怎么做呢?我如何确保在验证模型时,但提供了模型没有将验证标签传递给编码器的标签(即,如果发生这种情况,验证不会测试嵌入式复制编码器的效果)?
解决方案
我找到了答案,module.training
调用 model.eval() 时设置了一个属性。
推荐阅读
- sql - SQL根据特定条件计算供应商折扣
- python - 如何使用 cmd 安装 pygame?
- javascript - REACTJS - 分配一个
到一个变量? - flutter - 查询我的子集合的第一个文档的数据
- java - Java - 将数组分组为更小的数组
- firebase - Firebase 身份验证重置密码
- sql-server - SQL Server Management Studio (SSMS)“查看依赖项”未正确显示
- swiftui - SwiftUI 应用程序中的新窗口中缺少窗口控制按钮
- flutter - 我得到了 user_id 的空值
- gitlab - 分叉的 GitLab 项目上没有 CI/CD