模型训练时间过长

我在使用PyTorch的VGG-16模型中,在卷积层之后添加了一个LSTM层。经过一段时间,模型的学习效果很好。然而,仅仅增加了一个由32个LSTM单元组成的LSTM层后,训练和评估的过程大约变慢了10倍。

我按照如下方式将LSTM层添加到VGG框架中

def make_layers(cfg, batch_norm=False):   # print("Making layers!")    layers = []    in_channels = 3    count=0    for v in cfg:        count+=1        if v == 'M':            layers += [nn.MaxPool2d(kernel_size=2, stride=2)]        else:            conv2d = nn.Conv2d(in_channels, v, kernel_size=3, padding=1)            if batch_norm:                layers += [conv2d, nn.BatchNorm2d(v), nn.ReLU(inplace=True)]            else:                layers += [conv2d, nn.ReLU(inplace=True)]                in_channels=v        if count==5:            rlstm =RLSTM(v)            rlstm=rlstm.cuda()            layers+=[rlstm]

RLSTM是我自定义的类,它实现了Google的Pixel RNN论文中的RowLSTM。

这是常见的问题吗?一般来说,LSTM层训练时间都很长吗?


回答:

是的,因为LSTM(以及许多其他RNN)依赖于信息的顺序输入,你会失去CNN通常拥有的很大一部分并行化加速。你可以探索其他类型的RNN,它们利用更多可并行化的算法,但与LSTM/GRU相比,它们的预测性能的评判仍未有定论。

Related Posts

如何从数据集中移除EXIF数据?

我在尝试从数据集中的图像中移除EXIF数据(这些数据将…

用于Python中的“智能点”游戏的遗传算法不工作

过去几天我一直在尝试实现所谓的“智能点”游戏。我第一次…

哪个R平方得分更有帮助?

data.drop(‘Movie Title’, ax…

使用线性回归预测GRE分数对录取率的影响

我正在学习线性回归,并尝试在Jupyter笔记本中用P…

使用mlrMBO贝叶斯优化进行SVM超参数调优时出现错误

我试图针对一个分类任务优化SVM,这个方法在许多其他模…

Keras模型的二元交叉熵准确率未发生变化

我在网上看到了很多关于这个问题的提问,但没有找到明确的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注