gpt4 book ai didi

deep-learning - 确定 CNN 中滤波器矩阵的值

转载 作者:行者123 更新时间:2023-12-02 20:32:53 25 4
gpt4 key购买 nike

我正在开始学习深度学习,并且有一个关于 CNN 的基本问题。我了解如何根据损失函数使用反向传播来调整梯度。但我认为卷积滤波器矩阵(CNN 中)的值需要由我们确定。

我正在使用 Keras,这就是(来自教程)卷积层的定义方式:

classifier = Sequential()
classifier.add(Conv2D(32, (3, 3), input_shape = (64, 64, 3), activation = 'relu'))

使用了 32 个尺寸为 3x3 的滤波器矩阵。

但是,这些 32x3x3 矩阵的值是如何确定的?

最佳答案

调整的不是梯度,反向传播算法计算出的梯度只是网络中每个权值的偏导数组,这些分量依次用于调整网络权值,以最小化网络权值损失。

看看这个 introductive guide .

示例中卷积层中的权重将被初始化为随机值(根据特定方法),然后在训练期间进行调整,使用每次迭代时的梯度来调整每个单独的权重。对于全连接层或任何其他具有权重的层中的权重也是如此。

编辑:我正在添加有关上述答案的更多详细信息。

假设您有一个单层神经网络,其中有一些权重 W。现在,在前向传递过程中,您计算​​网络的输出 yHat,将其与训练样本的预期输出 y 进行比较,然后计算一些成本 C(例如,使用二次成本函数)。

现在,您有兴趣使网络更加准确,即。你想尽可能地减少 C。想象一下,您想要找到 f(x)=x^2 这样的简单函数的最小值。您可以从某个随机点开始(就像您对网络所做的那样),然后计算该点处函数的斜率(即导数)并沿着该方向移动,直到达到最小值(至少是局部最小值) )。

对于神经网络来说,这是同样的想法,不同之处在于你的输入是固定的(训练样本),你可以看到你的成本函数 C 有 n 个变量,其中 n 是网络中权重的数量。为了最小化 C,您需要成本函数 C 在每个方向上的斜率(即相对于每个变量、每个权重 w),并且偏导数的向量就是梯度。

一旦你有了梯度,你“沿着斜率移动一点”的部分就是权重更新部分,你根据它的偏导数更新每个网络权重(一般来说,你减去一些学习率乘以相对于该权重的偏导数)。

经过训练的网络只是一个网络,其权重经过多次迭代调整,使得训练数据集上的成本函数 C 的值尽可能小。

对于卷积层来说也是一样的:首先随机初始化权重(即,将自己放置在成本函数 C 图上的随机位置),然后计算梯度,然后“下坡” , IE。您可以按照梯度调整每个权重,以最小化 C。

全连接层和卷积层之间的唯一区别在于它们如何计算输出,以及如何计算梯度,但是使用梯度更新每个权重的部分对于网络。

因此,为了回答您的问题,卷积核中的那些滤波器最初是随机的,然后使用反向传播算法进行调整,如上所述。

希望这有帮助!

关于deep-learning - 确定 CNN 中滤波器矩阵的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48143222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com