deep-learning - 层归一化会延迟训练吗?
问题描述
你可以在这里找到我的代码和结果:
https://github.com/shwe87/tfm-asr/blob/master/ASR-Spanish-Bi-RNN-17062020.ipynb
我用西班牙语测试了两个简单的 ASR 模型:
型号 1:
- Layer Normalization
- Bi-directional GRU
- Dropout
- Fully Connected layer
- Dropout
- Fully Connected layer as a classifier (classifies one of the alphabet chars)
型号 2:
- Conv Layer 1
- Conv Layer 2
- Fully Connected
- Dropout
- Bidirectional GRU
- Fully connected layer as a classifier
我尝试了 30 个 epoch,因为我的 GPU 资源有限。这两个模型的验证和训练损失: 模型 1 的表现不如预期。模型 2 工作得很好,在 20 个 epoch 之后,它开始过度拟合(请参阅笔记本结果中的图表),在输出中,我实际上可以看到一些看起来像标签的单词。尽管它是过拟合的,但它仍然需要训练,因为它不能预测总结果。首先,我对这个模型很满意。
我测试了第三个复杂模型。你可以在这里找到它的结果输出:
https://github.com/shwe87/tfm-asr/blob/master/ASR-DNN.ipynb
模型 3:
- Layer Normalization
- RELU
- Bidirectional GRU
- Dropout
- Stack this 10 times more.
这个模型的有效损失和训练损失: 我在 30 个 epoch 上测试了这个,没有好的结果,实际上,所有的预测都是空白的......
这是因为这个复杂的模型需要更多的 epoch 来训练吗?
更新:
我修改了模型,在堆叠的 GRU 之前添加了 2 个卷积层,模型似乎得到了改进。
我看到在第一个模型和第三个模型中,我应用了层归一化,两者的预测似乎都非常糟糕......层归一化会导致学习延迟吗?但根据像这样的论文: https ://www.arxiv-vanity.com/papers/1607.06450/层归一化加速了训练,也有助于加速训练损失。所以,我真的很困惑。我的 GPU 资源有限,我不确定是否应该在不进行层标准化的情况下再试一次......
解决方案
推荐阅读
- variables - 重命名变量后makefile出现问题
- mysql - 我如何编写正确的内部连接查询
- angular - 如何在 Angular HTML 页面中引用图像
- tarantool - 如何从 tarantool 中选择一系列键,例如 SQL 中的 SELECT BETWEEN?
- apache-spark - 如何使用新列对 Spark dataFrame 中的字符串字段进行 JSON 转义
- r - 执行 left_join 但在执行连接时从 y 数据帧中保留一个观察列
- angular - Angular 7 Typescript - 服务错误句柄丢失对象实例
- sql - 如何将变量从一种排序规则转换为另一种排序规则?
- swift - 在SwiftUI中,控件事件在哪里,即scrollViewDidScroll检测列表数据的底部
- python - 如何在他们选择的 seaborn 分布图中添加垂直线?[单个图中的多个分布]