我正在训练具有过滤器大小= 251 ,5个级别和膨胀因子= 2 ^ 5 = 32 的时间卷积网络。因为我需要覆盖的接受域是15000。 在前25个时期中,我注意到训练和验证集的验证性和准确性都在增加,而测试集的准确性仅为 20%。
Epoch 000: | Train Loss: 0.14442 | Val Loss: 0.10309 | Train Acc: 0.144| Val Acc : 0.625
Epoch 001: | Train Loss: 0.21197 | Val Loss: 0.07434 | Train Acc: 0.212| Val Acc : 0.670
Epoch 002: | Train Loss: 0.25545 | Val Loss: 0.05910 | Train Acc: 0.255| Val Acc : 0.710
Epoch 003: | Train Loss: 0.28689 | Val Loss: 0.04986 | Train Acc: 0.287| Val Acc : 0.730
Epoch 004: | Train Loss: 0.31173 | Val Loss: 0.04456 | Train Acc: 0.312| Val Acc : 0.746
Epoch 005: | Train Loss: 0.33284 | Val Loss: 0.04160 | Train Acc: 0.333| Val Acc : 0.760
Epoch 006: | Train Loss: 0.35161 | Val Loss: 0.04002 | Train Acc: 0.352| Val Acc : 0.763
Epoch 007: | Train Loss: 0.36873 | Val Loss: 0.03922 | Train Acc: 0.369| Val Acc : 0.768
Epoch 008: | Train Loss: 0.38461 | Val Loss: 0.03929 | Train Acc: 0.385| Val Acc : 0.765
Epoch 009: | Train Loss: 0.39947 | Val Loss: 0.03959 | Train Acc: 0.399| Val Acc : 0.770
Epoch 010: | Train Loss: 0.41351 | Val Loss: 0.03997 | Train Acc: 0.414| Val Acc : 0.779
.
.
.
Epoch 022: | Train Loss: 0.53773 | Val Loss: 0.05469 | Train Acc: 0.538| Val Acc : 0.793
Epoch 023: | Train Loss: 0.54532 | Val Loss: 0.05588 | Train Acc: 0.545| Val Acc : 0.792
Epoch 024: | Train Loss: 0.55257 | Val Loss: 0.05720 | Train Acc: 0.553| Val Acc : 0.795
我有5个类可以预测,并且我正在使用TCN的pytorch实现。 TCN模块如下;
class TCN(nn.Module):
def __init__(self, input_size, output_size, num_channels, kernel_size, dropout):
super(TCN, self).__init__()
self.tcn = TemporalConvNet(input_size, num_channels, kernel_size, dropout=dropout)
self.linear = nn.Linear(num_channels[-1], output_size)
def forward(self, x):
output = self.tcn(x)
output = self.linear(output[:, :, -1])
return output.double()
这是TCN:TCN.py
为什么损耗和精度会增加,但无法进行测试?我是否需要试验其他过滤器尺寸/膨胀因子,或者是否需要为向前方法添加S型函数? 我正在使用CrossEntropyLoss和SGD优化器。这些指标可以表明什么想法?我有点迷茫。 谢谢
答案 0 :(得分:0)
您还面临着过度拟合的问题,而且具有当前超参数的模型无法概括该问题的解决方案。我建议简化模型本身,并尝试使用正则化技术以获得更好的结果