如何在每个卷积层提取特征向量?

时间:2016-12-22 17:19:16

标签: python tensorflow

这是我的代码:

   # conv1_1
        with tf.name_scope('conv1_1') as scope:
            kernel = tf.Variable(tf.truncated_normal([3, 3, 3, 64], dtype=tf.float32,
                                                     stddev=1e-1), name='weights')
            conv = tf.nn.conv2d(images, kernel, [1, 1, 1, 1], padding='SAME')
            biases = tf.Variable(tf.constant(0.0, shape=[64], dtype=tf.float32),
                                 trainable=True, name='biases')
            out = tf.nn.bias_add(conv, biases)
            self.conv1_1 = tf.nn.relu(out, name=scope)
            self.parameters += [kernel, biases]

        # conv1_2
        with tf.name_scope('conv1_2') as scope:
            kernel = tf.Variable(tf.truncated_normal([3, 3, 64, 64], dtype=tf.float32,
                                                     stddev=1e-1), name='weights')
            conv = tf.nn.conv2d(self.conv1_1, kernel, [1, 1, 1, 1], padding='SAME')
            biases = tf.Variable(tf.constant(0.0, shape=[64], dtype=tf.float32),
                                 trainable=True, name='biases')
            out = tf.nn.bias_add(conv, biases)
            self.conv1_2 = tf.nn.relu(out, name=scope)
            self.parameters += [kernel, biases]

        # pool1
    #here we need sum pooling instead of max pooling

        self.pool1 = tf.nn.max_pool(self.conv1_2,
                               ksize=[1, 2, 2, 1],
                               strides=[1, 2, 2, 1],
                               padding='SAME',
                               name='pool1')

我想在卷积层之后提取特征向量以传递给我的自定义函数。我对Tensorflow很新,所以我不明白该怎么做。

1 个答案:

答案 0 :(得分:0)

如果您的自定义函数是tensorflow图的一部分,您应该能够直接引用您创建的张量。例如如果您想激活conv1_1,请使用self.conv1_1中存储的张量。

如果您的自定义函数需要原始数字,则在处理之后,您可以将相同的张量引用传递到session.run,例如

sess = tf.Session()
sess.run([self.conv1_1], ...)