我有cnn模型代码。
classifier = Sequential()
classifier.add(Convolution2D(32,3,3, input_shape =
(256,256,3),activation = "relu"))
classifier.add(MaxPooling2D(pool_size = (2,2)))
所以现在我需要找到32个过滤器初始化时使用的值?任何有助于打印过滤器值的代码
答案 0 :(得分:2)
这是默认的keras Conv2d初始化:kernel_initializer='glorot_uniform'
(对于旧版本的keras,则为init='glorot_uniform'
)。
您可以在此处查看此初始化程序的作用:Keras initializers
最后,这是访问第一层权重的一种方法:
classifier = Sequential()
classifier.add(Convolution2D(32,3,3, input_shape =
(256,256,3),activation = "relu"))
classifier.add(MaxPooling2D(pool_size = (2,2)))
first_layer = classifier.layers[0]
print(first_layer.get_weights()) # You may need to process this output tensor to get a readable output and not just a raw tensor
答案 1 :(得分:1)
从模型中获取相应的图层
layer = classifier.layers[0] # 0th layer is the convolution in your architecture
每个卷积层都有两个变量(过滤器内核和偏移)。获取对应的
filters = layer.weights[0] # kernel is the 0th index
现在过滤器包含您要查找的值,它是一个张量。要获取张量的值,请使用Keras后端的get_value()函数
import keras.backend as K
print(K.get_value(wt))
这将打印一个形状为(3,3,3,32)的数组,该数组将转换为3个通道的32个内核大小为3x3的滤镜。