深度学习中,Params参数量和FLOPs计算量分别指什么
在深度学习中,参数量和计算量是两个重要的概念。
- 参数量:
参数量指的是深度神经网络中需要学习的参数数量。在深度学习中,每个神经元都有一个权重,这些权重是需要通过训练来确定的。深度神经网络中的参数量是指所有权重的数量之和,其中包括连接输入和输出的权重,以及所有神经元的偏置项。
例如,一个具有3层(输入层,隐藏层和输出层)的全连接神经网络,输入层有100个神经元,隐藏层有50个神经元,输出层有10个神经元。那么,该神经网络的总参数量为:
(100 * 50) + 50 + (50 * 10) + 10 = 5,110
其中,(100 * 50) 是输入层和隐藏层之间的连接权重数量,50 是隐藏层的偏置项数量,(50 * 10) 是隐藏层和输出层之间的连接权重数量,10 是输出层的偏置项数量。
你可以将参数量类比为数据结构中的空间复杂度(当然存在区别,这里是指GPU上开辟的显存;而ds中是开辟内存空间,主要和递归工作栈有关)
- 计算量:
计算量指的是在模型中进行前向传播和反向传播所需的浮点运算次数(通常将相乘后相加看做一次操作,乘法消耗大于加法消耗)。在深度学习中,神经网络的计算量通常是指卷积、乘法和加法操作的数量。由于深度神经网络具有非常大的计算量,因此需要强大的计算能力才能对其进行训练和推理。
例如,对于一个卷积神经网络,如果输入数据为 N,每个输入的通道数为 C,输入数据的高度和宽度为 H 和 W,卷积核大小为 K,卷积核的深度为 D,则在进行卷积操作时需要执行的浮点运算数量为:
N * C * H * W * K * K * D
例如,对于一个输入数据为 N=10,通道数为 C=3,输入数据的高度和宽度为 H=32 和 W=32,卷积核大小为 K=3,卷积核深度为 D=64 的卷积神经网络,则需要执行的浮点运算数量为:
10 * 3 * 32 * 32 * 3 * 3 * 64 = 139,345,920
总的来说,计算量和参数量是衡量深度学习模型大小和复杂度的重要指标。随着深度学习模型的不断发展和增强,参数量和计算量也越来越大,需要更强大的计算资源才能进行训练和推理。
可以将计算量类比ds中时间复杂度(当然有区别,dl中是指乘加法计算次数,ds中主要指for循环几层)
- 参数量越小需要显存越少,计算量越小算的时间越少。