【问题标题】:How many model parameters do we need to optimize for the following CNN model?下面的CNN模型我们需要优化多少模型参数?
【发布时间】:2021-12-15 02:05:06
【问题描述】:

我们使用以下卷积神经网络对一组 32×32 灰度图像进行分类(因此输入大小将是 32$\times$32$\times$1):

  1. 第 1 层:具有 ReLU 非线性激活函数的卷积层,100 个步长为 1 的 5×5 滤波器。

  2. 第 2 层:2×2 最大池化层

  3. 第 3 层:具有 ReLU 非线性激活函数的卷积层,50 个步长为 1 的 3×3 滤波器。

  4. 第 4 层:2×2 最大池化层

  5. 第五层:全连接层

  6. 第 6 层:分类层

我们需要在第一层和第二层优化多少模型参数(假设使用了偏置项)

【问题讨论】:

  • 你使用的是哪个库?
  • 这是一个普遍的问题,它没有使用Python中的任何库,只是我想知道我们必须优化的每一层之后的参数数量
  • 32*32*1 宽m,高n,前一层的filters dk在当前层((m * n * d)+1)* k)=((5*5*1) +1)*100)=260 in first layer and second layer 这没有可学习的参数,因为它所做的只是计算一个特定的数字,不涉及反向传播学习!因此参数数量 = 0。但不确定,需要确认

标签: python deep-learning neural-network conv-neural-network machine-learning-model


【解决方案1】:

可以使用tensorflow来显示可训练参数的个数:

import tensorflow as tf
from tensorflow.keras import layers

def make_model():
    model = tf.keras.Sequential()
    model.add(layers.Conv2D(100, (5, 5), strides=1,input_shape=[32, 32, 1]))
    model.add(layers.LeakyReLU())
    model.add(layers.MaxPooling2D(pool_size=(2, 2)))

    return model

model=make_model()

model.summary()

这给出了 2600 个可训练参数和 0 个不可训练参数。

【讨论】:

  • ((5*5*1)+1)*100)=2600 所以它适用于第一层和第二层最大池 这没有可学习的参数,因为它所做的只是计算一个特定的数字,不涉及背景学习!因此多个参数 = 0。对吗?
  • 是的,第二层为 0!
  • 一切都好,如果你觉得有用别忘了采纳答案!
猜你喜欢
  • 1970-01-01
  • 2019-04-04
  • 2017-10-30
  • 1970-01-01
  • 2017-11-20
  • 2022-07-15
  • 1970-01-01
  • 2021-04-02
  • 2020-01-16
相关资源
最近更新 更多