CS224N 2019-20: Homework 3

实验大体思路与遇到的重难点:
a, init里构造stack,buffer,dependence。parse_step里将‘S’,‘LA’,’RA’转化成具体的stack,buffer,dependence互相转移的操作。比较简单,不做赘述。
b, 重点步骤实现思路为在minibatch_parse里面实现每次循环让一个batch的数据输入模型得到一批数据的下一步进而更新一批数据,如果这一批数据有哪一个这一步之后分析完了就从unfinished_parses里面删除,下一次循环会有新的一个数据进入。这里unfinished_parses是浅复制,用remove不会影响到partial_parses,但用del就不行之后就没法统计partial_parses里面的dependence了。
c, 这一问通过重载nn.Module实现自定义_init_,embedding_lookup以及forward方法,与传统模型有所差异的是,init里面不直接要求调研api实现linear层,而是申明几个自有权重与偏置矩阵,这就为后面实现forward增加了一点小小的难度,需要我们仔细考虑矩阵的shape保证运算顺利。说到矩阵shape,embedding_lookup里面也很费尽心机,怎样按行顺序遍历w,并在embedings维度0里面定位累积并把产生的(n_features*batch_size, embed_size)的数据reshape成(batch_size, n_features * embed_size)十分考验对数据维度的敏感性,最终通过index_select与view函数顺利解决。run.py里面比较值得一说的就是loss_func里面自带softmax之前forward就不需要了。

关于结果中验证集结果小于测试集我查了一下,大概率由Dropout造成,它能基本上确保您的测试准确性最好,优于您的训练准确性。Dropout迫使你的神经网络成为一个非常大的弱分类器集合,这就意味着,一个单独的分类器没有太高的分类准确性,只有当你把他们串在一起的时候他们才会变得更强大。

运行截图:
在这里插入图片描述
UAS:
验证集最佳UAS:88.54
测试集UAS:89.14

代码: https://github.com/Goden-Yang/CS224N-2019-20-Homework-3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值