【发布时间】:2021-10-26 09:37:22
【问题描述】:
我正在测试 CNN 模型的时间和准确度性能,并进行了一些不同的小改动。在这个模型中,卷积之间的一些激活层被跳过了。所以我添加了它们。我注意到添加了 ELU 激活的模型具有
每张图像的性能 3.07 毫秒,测试集的准确率 92.26%
没有它们的模型有
每张图像的性能 3.52 毫秒,测试集的准确率 92.34%
虽然模型参数的数量是一样的。所以我的问题是为什么激活会大大降低模型的时间性能?
这里以部分代码为例:
...
nn.Conv2d(28 * filters_multiplier, 28 * filters_multiplier, kernel_size=(3, 1), padding=(1, 0)),
nn.Conv2d(28 * filters_multiplier, 28 * filters_multiplier, kernel_size=(1, 3), padding=(0, 1)),
# nn.ELU(),
nn.Conv2d(28 * filters_multiplier, 28 * filters_multiplier, kernel_size=(3, 1), padding=(1, 0)),
nn.Conv2d(28 * filters_multiplier, 40 * filters_multiplier, kernel_size=(1, 3), padding=(0, 1)),
...
因此,带有注释块的代码比没有注释的代码运行得更快。
UPD 我刚刚使用 ReLU() 函数进行了测试,它的工作速度与第一个模型一样快,没有激活。所以也许只是在 ELU() 中的问题?
【问题讨论】:
标签: performance deep-learning pytorch conv-neural-network activation-function