python - 使用 OpenNMT 进行迁移学习
问题描述
我正在使用 OpenNMT-py 在 MIDI 音乐文件上训练一个变压器模型,但结果很差,因为我只能访问一个与我想研究的风格有关的小数据集。为了帮助模型学习一些有用的东西,我想使用更大的其他音乐风格的数据集进行预训练,然后使用小数据集微调结果。
我想在预训练后冻结变压器的编码器端,让解码器部分自由地进行微调。如何使用 OpenNMT-py 做到这一点?
解决方案
请更具体地说明您的问题并显示一些代码,这将帮助您从 SO 社区获得富有成效的回应。
如果我在你的位置并想冻结一个神经网络组件,我会简单地做:
for name, param in self.encoder.named_parameters():
param.requires_grad = False
在这里,我假设您有一个如下所示的 NN 模块。
class Net(nn.Module):
def __init__(self, params):
super(Net, self).__init__()
self.encoder = TransformerEncoder(num_layers,
d_model,
heads,
d_ff,
dropout,
embeddings,
max_relative_positions)
def foward(self):
# write your code
推荐阅读
- django - DRF:始终应用默认权限类
- python - 使用自定义 API 更新 Opencart 产品
- robotframework - robotsframework-imaplibrary2 0.3.2 在机器人框架中不工作
- javascript - 即使在示例项目中,vscode-test 设置中的 runTest.ts 类也从未使用过,它有什么用?
- aws-lambda - 强制从 S3 重新部署 Lambda 函数?
- excel - 如果特定单元格具有值,则复制范围
- sql - 使用 Excel-VBA 和 ADODB 对象时出现“自动化错误”“未指定错误”
- java - Temporarily increase log4j2 logger level in multi-threaded service
- csv - 需要运行收集多次迭代并需要运行我为 json body 声明数据的 csv 文件
- java - 在投票应用程序的活动之间传递数据