这个你可以去找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模型,卷积核训练不训练是可以选择的,你可以训练改变它,也可以一直都用初始值而不去训练它。但是一般情况下都是要训练的。