卷积神经网络中的卷积核是学习得来,还是预定义好的

2025-03-23 02:56:01
推荐回答(1个)
回答1:

这个你可以去找tflearn的源代码,看一遍就理解了。

网址:https://github.com/tflearn/tflearn/


里边有一个kernel函数“conv_2d”是这么声明的:

def conv_2d(incoming, nb_filter, filter_size, strides=1, padding='same',

activation='linear', bias=True, weights_init='uniform_scaling',

bias_init='zeros', regularizer=None, weight_decay=0.001,

   trainable=True, restore=True, reuse=False, scope=None,

name="Conv2D"):


这里面有一个输入是weights_init,也就是filter(卷积值)的初始化,而且有默认值。这就是说当你做卷积的时候是一定会给卷积核一个初始值的。

这其中还有一个叫trainable的输入,它是一个bool值,决定了权值矩阵(即filters,也就是卷积核)可不可以被训练。默认是true,也就是可以训练。

从这里可以看出,对于不同的CNN模型,卷积核训练不训练是可以选择的,你可以训练改变它,也可以一直都用初始值而不去训练它。但是一般情况下都是要训练的。