我在TensorFlow V1.0中使用tf.layers.conv2d
进行卷积。
一个例子如下:
conv1 = tf.layers.conv2d(batch_images, filters=96,
kernel_size=7,
strides=2,
activation=tf.nn.relu,
kernel_initializer=tf.contrib.layers.xavier_initializer_conv2d(uniform=False),
bias_initializer=tf.contrib.layers.xavier_initializer(uniform=False),
kernel_regularizer=tf.nn.l2_loss,
bias_regularizer=tf.nn.l2_loss,
name='conv1')
然后我尝试按如下方式收集过滤器权重: -
l1weights = tf.get_collection(tf.GraphKeys.WEIGHTS, 'conv1')
然而,虽然网络正在接受培训,但我会在会话中评估[]
时获得l1weights
。
如何使用tf.summary.image
提取过滤器权重并将其可视化?
答案 0 :(得分:9)
我设法使用以下
获得权重conv1 = tf.layers.conv2d(
inputs=input_layer,
filters=32,
kernel_size=[5, 5],
padding="same",
activation=tf.nn.relu, name='conv1')
kernel = tf.get_collection(tf.GraphKeys.VARIABLES, 'conv1/kernel')[0]
bias = tf.get_collection(tf.GraphKeys.VARIABLES, 'conv1/bias')[0]
希望它有所帮助。
答案 1 :(得分:1)
我建议在tf.contrib.keras.layers.Conv2D
中使用基于类的图层API,它将变量公开为图层对象的成员。
另外,请确保您在训练模型的同一会话中获取变量,否则您将获得未初始化的变量错误。