Python Alex网络用于特征提取

Python Alex网络用于特征提取,python,classification,tensorflow,feature-extraction,Python,Classification,Tensorflow,Feature Extraction,我试图为ImageNet获取可靠的特征,以便对其进行进一步分类。为了实现这一点,我想使用tensorflow和Alexnet进行特征提取。这意味着我想从CNN的最后一层获取值。有人能写一段Python代码来解释它是如何工作的吗?如前所述,这并不是stackoverflow的真正目的,但在实践中,许多人确实选择编写代码来帮助解释答案(因为这通常更容易)。 所以我假设这只是沟通失误,你真的想问以下两个问题之一: 如何获取TensorFlow中Alexnet最后一层的值 从深层卷积网络(如alexne

我试图为ImageNet获取可靠的特征,以便对其进行进一步分类。为了实现这一点,我想使用tensorflow和Alexnet进行特征提取。这意味着我想从CNN的最后一层获取值。有人能写一段Python代码来解释它是如何工作的吗?

如前所述,这并不是stackoverflow的真正目的,但在实践中,许多人确实选择编写代码来帮助解释答案(因为这通常更容易)。 所以我假设这只是沟通失误,你真的想问以下两个问题之一:

  • 如何获取TensorFlow中Alexnet最后一层的值
  • 从深层卷积网络(如alexnet)的最后一层提取特征是如何工作的
  • 第一个问题的答案其实很简单。我将使用TensorFlow中的
    cifar10
    示例代码(它松散地基于AlexNet)作为示例。网络的前向传递构建在
    推断
    函数中,该函数返回表示softmax层输出的变量。要实际获得预测的图像标签,只需将logits argmax,如下所示:(我省略了一些设置代码,但是如果您已经运行了alexnet,那么您已经可以使用它了)

    因此,仅仅抓住最后一层的特征就如同要求它们一样简单。唯一的问题是,在本例中,cifar10不会以本机方式公开它们,因此需要修改cifar10.inference函数以返回这两个参数:

    # old code in cifar10.inference:
    # return softmax_linear
    # new code in cifar10.inference:
    return softmax_linear, local4
    
    然后修改对cifar10.inference的所有调用,就像我们刚才展示的那样:

    logits,local4 = cifar10.inference(images)
    predictions = tf.argmax(logits,1)
    # Actually run the computation, this time asking for both answers
    labels,last_layer = session.run([predictions, local4])
    
    就这样<代码>最后一层包含您为模型提供的所有输入的最后一层

    至于第二个问题,这是一个更深层次的问题,但我猜这就是为什么你想研究它。我建议从阅读这方面发表的一些论文开始。我不是这里的专家,但我确实喜欢周伯雷的作品。例如,尝试查看中的图2。这是一篇本地化论文,但它使用了非常相似的技术(博雷的几篇论文也使用了这种技术)。

    正如前面提到的,这并不是stackoverflow真正的目的,但在实践中,许多人确实选择编写代码来帮助解释答案(因为这通常更容易)。 所以我假设这只是沟通失误,你真的想问以下两个问题之一:

  • 如何获取TensorFlow中Alexnet最后一层的值
  • 从深层卷积网络(如alexnet)的最后一层提取特征是如何工作的
  • 第一个问题的答案其实很简单。我将使用TensorFlow中的
    cifar10
    示例代码(它松散地基于AlexNet)作为示例。网络的前向传递构建在
    推断
    函数中,该函数返回表示softmax层输出的变量。要实际获得预测的图像标签,只需将logits argmax,如下所示:(我省略了一些设置代码,但是如果您已经运行了alexnet,那么您已经可以使用它了)

    因此,仅仅抓住最后一层的特征就如同要求它们一样简单。唯一的问题是,在本例中,cifar10不会以本机方式公开它们,因此需要修改cifar10.inference函数以返回这两个参数:

    # old code in cifar10.inference:
    # return softmax_linear
    # new code in cifar10.inference:
    return softmax_linear, local4
    
    然后修改对cifar10.inference的所有调用,就像我们刚才展示的那样:

    logits,local4 = cifar10.inference(images)
    predictions = tf.argmax(logits,1)
    # Actually run the computation, this time asking for both answers
    labels,last_layer = session.run([predictions, local4])
    
    就这样<代码>最后一层包含您为模型提供的所有输入的最后一层

    至于第二个问题,这是一个更深层次的问题,但我猜这就是为什么你想研究它。我建议从阅读这方面发表的一些论文开始。我不是这里的专家,但我确实喜欢周伯雷的作品。例如,尝试查看中的图2。这是一篇本地化论文,但它使用了非常类似的技术(博莱的几篇论文也使用了这种技术)。

    “有人能写一段python代码,解释一下它是如何工作的吗?”-我想你误解了。请阅读下面的文章:“有人能写一段python代码来解释它是如何工作的吗?”-我想你误解了。拿起这本书,仔细阅读。