修改cnn-bilstm-crf模型中间过程记录
CnnEncoder中torch.nn.conv1d参数
embedding_dim[required]:input_dim
num_filters[required]:每一层conv的output_dim
ngram_filter_sizes:tuple(int),卷积层数量以及每层的卷积核大小
conv_layer_activation:激活函数
output_dim:default:`len(ngram_filter_sizes) * num_filters`
conv1d参数
in_channels[required]:input特征num?
out_channels[required]:卷积层输出
kernel_size (int or tuple)[required]:卷积核大小
stride:default:1
padding:default:0
padding_mode:default:zeros
dilation:default:1
groups:default:1
bias:default: ``True``
permute(dim)参数
参数是一系列整数,代表原来tensor的维度
view()参数
torch.view()改变tensor形状, view(-1,20,16) **args:-1 unsure layer_nums
20 reshape to 20rows
16 reshape to 16cols
只能存在一个-1参数,通过自动计算得出
try1
forward要求输入2 required args:tokens和mask
try2
报错
返回去修改in_channals数值,但是init处,还不能读取到input_dim的size.......
修改data_load处max(lengths),尝试设置为定量50
conv处没问题,linear前reshape处出错,要修改fc处,in_features和out_features的参数值
后面得改...完全是硬改到[16,50,100]
但居然可以往下到crf就emm也是离谱....... 离谱.....离谱到家了.....
train过程
epoch的f1 prec rec全是空值..
epoch2之后就有数值了
比之前模型train的loss下降的快,test拟合到目前最好f1的速度要快,且f1值要大于之前模型的值才一个点.......而且test的loss震荡,但在epoch10后就几乎不怎么下降了,train的准确率不如之前的模型,最高情况差1-2个点(好像大概也许是test的准确率,后面核对一下)
epoch30的时候指标都超过了原模型
epoch38后自己调整了学习率?我好像之前没设置调整学习率的,自己调整到.00001
epoch40左右就过拟了,train_loss不下降,f1也稳定在54-56区间
最佳epoch38,train_loss 5.23,test_f1 57.9 prec 68.98 rec 49.89 loss 24.34
调整了cnn卷积层,有优化,没截图,最高F1达到60.09(好像是)
尝试修改cnn内部,分维过线性层
修改pad处,增加pack_padded_sequence,查看之前未清理的padding是否会影响效果
单独存储lengths,到模型里调用读取,解锁存储list到txt的新方法
报错:Expected `len(lengths)` to be equal to batch_size, but got 2376 (batch_size=16)
embeddings.size() [16,50,208] 但是len(floatline)=2376
此方法废了,不匹配,使用forward里的x_mask读取当前处理batch的lengths
尝试改了前面的tokens那些的order,但是inputs那里的batch选取seq好像是随机的,一到tensor就乱了,不是之前order的数据,后面pack就没法继续。
暂弃,告辞。